JS中var let声明范围区别详解
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
声明的范围是块作用域。
以上就是JS中var let声明范围区别详解的详细内容,更多关于JS var let声明范围区别的资料请关注脚本之家其它相关文章!
相关文章
Django1.7+JQuery+Ajax验证用户注册集成小例子
下面是散仙使用Django+Jquery+Ajax的方式来模拟实现了一个验证用户注册时,用户名存在不存在的一个小应用。注意,验证存在不存在使用的是Ajax的方式,不用让用户点击按钮验证是否存在,需要的朋友可以参考下2017-04-04超出JavaScript安全整数限制的数字计算BigInt详解
这篇文章给大家分享了超出JavaScript安全整数限制的数字计算BigInt的相关知识点,有兴趣的朋友参考学习下。2018-06-06javascript中关于break,continue的特殊用法与介绍
javascript大家所熟知中的for是一个循环体,循环体其中的break和continue也是大家都比较熟悉的功能,相信大家对它们的用法不会陌生,本文不是介绍其功能,本文假设你已经熟悉break和continue的语意和用法2012-05-05eval(function(p,a,c,k,e,d)系列解密javascript程序
在网上下载源代码时,很可能发现代码里的JS脚本看不懂,这是由于JS加密造成的。如果你发现JS是以eval(function(p,a,c,k,e,r){e=function(c)开头的,看到这个页面你就可以解决他2007-04-04基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
下面小编就为大家带来一篇基于Bootstrap模态对话框只加载一次 remote 数据的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-07-07
最新评论