在嚴格版中的預設的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 訪問原則...