|
var声明提升
- console.log(name) //土豆
- var name = '土豆';
复制代码 使用声明的变量会自动提升到函数作用域的顶部- 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 ="土豆";
复制代码 而使用定义的不会被提升,报出的错误;
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
复制代码 使用定义的变量会被挂载到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
复制代码 使用声明的范围是函数作用域,使用声明的范围是块作用域。
以上就是JS中var let声明范围区别详解的详细内容,更多关于JS var let声明范围区别的资料请关注脚本之家其它相关文章!
来源:https://www.jb51.net/javascript/291966iw4.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|