关于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声明,②在变量所在在的作用域链中没有这个变量名称,则设置该变量为全局变量. 代码 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 //声明一个变量 var name; //给变量赋值 name = '哈士奇'; //声明并赋值一个变量 var name = '哈士奇'; 变量的使用 //声明并赋值一个变量 var age = 17; //使用变量-打印 控制台打印输出 console.log('我的年龄是:'+age); 页面内容打印 document.write('我的年龄是:'+age); 变量的命名规则 1.变量是以字母下划线.数字.$.字母组成 2.不能以数字开头 3.不能是关键字和保留
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对象中
参考资料http://caibaojian.com/toutiao/5446 1.所有变量声明(var)或者声明函数都会被提升到当前函数顶部 关于函数表达式,js会将代码拆分为两行代码分别执行.这里需要注意的是 var getName 和 function getName都是声明语句,区别在于var getName是函数表达式,function getName是函数声明,这里使用var进行函数声明和变量声明时一样的,都是声明提前至当前函数最顶部,二函数声明是将函数声明提升至当前函数顶部.(这个有
问题描述: 首先,看一个小的测试程序: public static void main(String[] args) { testStringBuffer test = new testStringBuffer(); StringBuffer stringBufferA = new StringBuffer("A"); StringBuffer stringBufferB = new StringBuffer("B"); StringBuffer stringBuf
腾讯的一个笔试题,先看一下 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.在一个过程级中(即位