共计 864 个字符,预计需要花费 3 分钟才能阅读完成。
-
var
申明晋升console.log(name) // 土豆 var name = '土豆';
应用
var
申明的变量会主动晋升到函数作用域的顶部function foo(){console.log(name); var name = "土豆"; } foo() //undefined // 等价于 function foo(){ var name; console.log(name); name = "土豆"; } foo(); //undefined
console.log(name) //ReferenceError name 没有被定义 let name ="土豆";
而应用
let
定义的name
不会被晋升,报出ReferenceError
的谬误; -
var
能够反复申明同一个变量var name = "番茄"; var name = "西瓜"; var name = "土豆"; console.log(name);// 土豆
而应用 let 反复申明同一个变量会报错。
var name = "土豆"; let name = "土豆"; console.log(name);//'name' has already been declared
let name = "土豆"; var name = "土豆"; console.log(name);//Cannot redeclare block-scoped variable 'name'.
-
var
全局申明var name = "土豆"; console.log(window.name);// 土豆 let age = "24"; console.log(window.age); //undefined
应用
var
定义的变量会被挂载到 window 上,成为 window 对象的属性,而应用 let 不会。 -
作用域
if(true){ var name = "土豆"; console.log(name); } console.log(name); // 土豆 // 土豆 if(true){ let age = 24; console.log(age); } console.log(age); //24 //undefined
应用
var
申明的范畴是函数作用域,应用let
申明的范畴是块作用域。
正文完