var num = 8;
const wantToKnowThis = function(val) {
var num = 6;
return this.num
}
console.log(wantToKnowThis(3));
如果我运行此代码,答案将是8,这是正确的,但是如果仅替换let或const来运行此代码,它将给出未定义的结果!
let num = 8;
const wantToKnowThis = function(val) {
var num = 6;
return this.num
}
console.log(wantToKnowThis(3));
让此关键字与const的行为相比,与var有所不同,请让我知道吗?
答案 0 :(得分:2)
如果在全局范围内使用var
,则它将在window
对象上隐式创建一个具有相同名称的属性。
const
或let
并非如此。
这实际上与this
没有任何关系,只不过删除了几个步骤。
如果您使用this
是没有上下文的函数(即,它不是对象上的方法,并且没有通过bind
或=>
获得绑定上下文),则this
将是window
(除非您使用"use strict"
,并且应始终使用"use strict"
,因为它可以防止各种陷阱)
如果您想访问函数外部的变量,则不要求助于全局变量。只需首先不要为本地变量赋予相同的名称。
let num = 8;
const wantToKnowThis = function(val) {
let local_num = 6;
return num;
}
console.log(wantToKnowThis(3));