js考察this,作用域鏈和閉包

2022-07-28 11:00:44 字數 1131 閱讀 8311

在嚴格版中的預設的this不再是window,而是undefined。

先看兩個例子

var num = 20;

var obj =

})(num)

};var fn = obj.fn;

fn(); //因此時num是在fn函式定義的是個區域性變數,num會自動找在**定義的找到初始值再計算,即45+20=65

obj.fn(); //因fn()執行的時候num改變成65了, 65+20=85

var num = 20;

var obj =

})(num)

};var fn = obj.fn;

fn(); //因此時this指向window,在自執行函式執行的時候,this.num *= 3;此時window.num = 60,執行fn(),60*4 = 240

obj.fn(); //120 此時this指向obj,this.num = 30, 30*4 = 120

(function()());

function a()

a() //window

如果函式返回值為常規意義上的值型別(number、string、boolean)時,new函式將會返回乙個該函式的例項物件,而如果函式返回乙個引用型別(object、array、function),則new函式返回改引用型別的物件

function fn()  

; //或者 rerurn function(){} 或者 return

}var a = new fn;

console.log(a.user); //undefined

function fn()

var a = new fn;

console.log(a); //fn

(function(a) 4

(function(a){

console.log(this,a)

// window 4

(function(a){

console.log(this,a)

// window 4

簡述JS作用域 作用域鏈和閉包

定義 乙個變數的作用域是程式源 中定義這個變數的區域。全域性變數擁有全域性作用域,區域性變數只有區域性作用域。塊級作用域 在es6 let變數宣告出來之前,js是沒有塊級作用域的概念的,函式內部定義的變數才是區域性變數,具體見下面的 var a 1 for var i 0 i 10 i functi...

作用域鏈和閉包

一.作用域鏈 scope chain 1.作用域 函式作用域 scope 外部對內部可見 內部對外部不可見 內部優先 js中只有函式級別的作用域,沒有塊級別的作用域 換句話說,只有在進入或者退出函式的時候,作用域會發生變化 2.執行環境 ec 和作用域鏈 執行環境,定義了執行期間可以訪問的變數和函式...

作用域,閉包,作用域鏈

一,作用域 變數在宣告它的函式及該函式所巢狀的任意函式是有定義的 例var num 2 function fun fun 二,作用域鏈 多個函式巢狀在一起,多個作用域相互巢狀,這是作用域鏈 var num 1 function fun function fun2 fun1 fun2 fun 訪問原則...