当我运行下面的代码时,它给我错误
var name = function print(){
console.log("welcome ......");
};
name();
js.js:5 Uncaught TypeError: name is not a function
at js.js:5
但是当我将var关键字更改为let时,它运行良好 谁能解释一下
let name = function print(){
console.log("welcome ......");
};
name();
答案 0 :(得分:3)
name
是JavaScript运行时中的预定义属性,它是set
或get
窗口名称。因此,在使用var
时,不能将此保留属性用作函数。
这样做的原因是let
允许您声明变量,其作用域仅限于使用它的块,语句或表达式。这与var
关键字不同,该关键字全局定义变量,或在整个函数局部定义变量,而与块范围无关。因此,当var
试图将name
定义为变量时,在这种情况下,globally
与现有的name
属性冲突,因此在使用{{1 }},但不能使用var
。
let
因此,要使代码运行,您需要将函数名称更改为其他名称,例如//get name value
console.log(name);
//set name value
name = 'someNewName';
console.log(name);
:
name1