嚴格模式 普通模式 箭頭函式中this指向問題

2022-07-02 06:39:07 字數 1314 閱讀 8109

var name="window";

var obj =

}obj.sayhello();

"use strict"//嚴格模式下

function foo()

foo();//undefined

*///在普通模式下,普通函式,誰呼叫這個函式,this就指向誰

function foo()

foo();//全域性函式可以看作是window的方法

var name="window";

var age1=20;

let age2=10;

console.log(window.age1);//20

console.log(window.age2);//undefined,let定義的不屬於全域性定義

var obj =

}obj.sayhello();//obj物件

console.log(obj.name);//objname

var name="window";

var obj = }}

obj.sayhello()();//window

上面相當於這個

var f=obj.sayhello();

obj.sayhello();//空

console.log(obj.sayhello());//輸出函式體

var name="window";

var obj = ) }}

obj.sayhello();//window

箭頭函式的this指向問題

箭頭函式this指向定義這個箭頭函式時所在環境中的this

在哪個地方定義就指向那個地方的this

var foo=()=>

foo();//window

var name="window";

var obj =

}obj.sayhello();//window

上面**執行機制相當於

var obj={};

obj.name="onjname";

obj.sayhello=()=>

obj.sayhello();//window

var name="window";

var obj = }}

obj.sayhello()();//obj

var name="window";

var obj = }}

obj.sayhello()();//window

var name = "window";

var obj = )}}

obj.sayhello(); //obj

ES6的箭頭函式this和普通函式的this區別

普通函式中,內層函式不能從外層函式中繼承this的值,在內層函式中,this會是window或者undefined,臨時變數self用來將外部的this值匯入到內部函式中 另外的方式是在內部函式執行.bind this es6中的箭頭函式會直接呼叫的this是繼承父級的this。functionfu...

Js中嚴格模式和非嚴格模式的區別

use strice 整個js檔案都是嚴格模式下執行的 var n 1 var foo function var n 1 var foo function 嚴格模式下,delete運算子後跟隨非法識別符號 即delete 不存在的識別符號 會丟擲語法錯誤 非嚴格模式下,會靜默失敗並返回false 嚴...

箭頭函式 普通函式中的this指向

this指向在箭頭函式和普通函式中的表現是不同的。1 箭頭函式 首先要明白的是箭頭函式的this指標是固定的,就是箭頭函式被定義時其所在環境的物件 因為箭頭函式其實自己是沒有this指標的,其this指標是判定了其直接外層的函式的this指標 這裡說的是函式而不是物件,因為物件不直接形成單獨的作用域...