关于let的描述 let允许你声明一个作用域被限制在块级中的变量.语句或者表达式.与var关键字不同的是,它声明的变量只能是全局或者整个函数块的. 作用域规则 let声明的变量只在其声明的块或子块中可用,这一点,与var相似.二者之间最主要的区别在于var声明的变量的作用域是整个封闭函数,是全域的 . function varTest() { var x = 1; if (true) { var x = 2; // 同样的变量! console.log(x); } console.log(x);
var 声明一个全局变量,声明的变量会变量提升: let 声明一个局部变量: 当页面加载完后,for循环也结束了,如果用var声明的变量此时也随着for循环的结束而自增到满足结束循环的条件, 此时调用for循环中的事件来获取变量,变量的值已经是自增完后的值了: 如果是let声明的变量,由于是个局部变量,只在for循环里面能别使用,不会因为页面加载的结束而影响事件获取每次 for循环中变量的值. 也可以使用闭包函数来获取用var声明的变量的值使与let声明的值有一样的作用:
变量的声明,关键字:var //声明一个变量 var name; //给变量赋值 name = '哈士奇'; //声明并赋值一个变量 var name = '哈士奇'; 变量的使用 //声明并赋值一个变量 var age = 17; //使用变量-打印 控制台打印输出 console.log('我的年龄是:'+age); 页面内容打印 document.write('我的年龄是:'+age); 变量的命名规则 1.变量是以字母下划线.数字.$.字母组成 2.不能以数字开头 3.不能是关键字和保留
结论: “没有用var声明的变量为全局变量”这样的说法不太正确,需要在这句话前面加一个前提,如果①变量前面没有用var声明,②在变量所在在的作用域链中没有这个变量名称,则设置该变量为全局变量. 代码 var n = 0; function foo(){ var n = 1; return function bar(){ n = 2; } } foo(); console.log(n);//0 这个例子中作用域链为bar--->foo---->window n=2沿着作用域链找到foo作用域中n
var Liarry = document.getElementsByTagName('li'); /**方法一*描述:自执行函数,将变量当参数传入(闭包的思想,保存当前的值).*/ for (var i = 0; i < Liarry.length; i++) { (function (j){ Liarry[j].addEventListener('click', function () { console.log(j); })})(i);} /**方法二*描述:将变量值保存在当前的li对象中
腾讯的一个笔试题,先看一下 var a = 100; function fn() { alert(a); //undefined var a = 200; alert(a); //200 } fn(); alert(a); //100 var a; alert(a); //100 var a = 300; alert(a); //300 前两个很简单,不解释 了,涉及到声明提前的问题. 后面仨为啥呢,这要总结下重复声明的问题: 1.使用var语句多次声明一个变量不仅是合法的,而且也不会造成任何错
JS的容错率很高,一些其他语言常见的小错误JS都能大度得包容,比如给一个方法传入超出预计的参数.在声明变量之前使用该变量(变量的声明提升解决了这个问题)等等,这里我们就要解剖一下JS变量重复声明以及当我们忽略var使用 a=2来声明变量时a为全局变量的问题: //第一段代码 var a = 2; var a = 3; alert(a);//3 //第二段代码 <span style="font-size:18px;"></span><pre name=&q
关于JavaScript中定义变量时有无var声明的区别 var a=5; //正确 a=5; //正确 在javascript中,以上两种方法都是定义变量的正确方法.微软的Script56.CHM中是这样解释的: 尽管并不安全,但声明语句中忽略 var 关键字是合法的JS语法.这时,JS 解释器给予变量全局范围的可见度.当在过程级中声明一个变量时,它不能用于全局范围,这种情况下,变量声明必须用 var 关键字. 从上面的描述看来,对待这两种定义方法要区分以下两种情况: 1.在一个过程级中(即位
在JavaScript中,var用来声明变量,但是这个语法并不严格要求,很多时修改,我们可以直接使用一个变量而不用var声明它.var x = "XX"; y ="xxx"; 诸如此类.这有一个问题,比如说在代码中的某一行,我想使用的一个已声明的变量x,结果由于打字或者拼写错误,这个变量被写成y了,结果相当于“隐式”声明了一个变量y,在实际编程过程中,这种错误有时比较难以发现. 除此之外,今天通过同事介绍,了解到这种“隐式声明”中的别外一个问题. 当你在当前上下文内
var操作符定义变量将成为定义该变量作用域的局部变量 举例说明: 例子1: function test(){ var message = "hi"; //message是函数内部局部变量 } test(); console.log(message); //报错 错误截图: 解析:变量message是在函数中使用var定义的.当函数被调用时,酒水创建该变量,并为其赋值.在此之后,这个变量又会被立即销毁,因此在此例子中的下一行代码会导致错误. 例子2: function test(){ m