js中var,let

var

使用var声明的变量的作用域是它当前执行的上下文,它可以是嵌套的函数,或者对于声明在任何函数外的变量来说是全局。(var没有块级作用域)

1.看清楚定义变量的位置,并不是所有变量都是全局变量,如在函数内定义变量,那它只在函数中有效。

        function demo() {
            var x = 10;    //这里定义的是在函数内的全局变量,只在函数内有效
            y = 20;        //这里定义的是全局变量,不过这里在严格模式下会抛出异常
        }
        demo();
        console.log(x);        //会出现x未被定义错误
        console.log(y);        //输出20,不过这里不会输出,因为上一句出现错误程序终止了

2.使用变量前最好先声明变量,不一定要进行赋值操作。

console.log(test);        //抛出ReferenceError异常



var test;
console.log(test);        //输出undefine

3.变量提升,由于变量声明(以及其他声明)总是在任意代码执行之前处理的,所以在代码中的任意位置声明变量总是等效于在代码开头声明。

a=2;
var a;

我们可以理解为
var a;
a=2;

let

使用let定义的变量与var 不同的它是有块级作用域的,使用var定义的变量在{}外是依然能被访问到的。即:

{
var a=1; 
}

console.log(a);        //输出1

而let声明的变量只在let命令的代码块{}内有效,在{}外是无法访问到的。 

{
    let a=2;
    console.log(a);        //输出2
}
    console.log(a);        //这里不能输出,a为未定义变量

循环作用域

当使用var定义变量时

 for (var i = 3; i <= 10; i++) {
            setTimeout(function () {
                console.log(i)
            }
            );
        }       //输出为11 11 11 11 11 11 11 11

当使用let定义变量时

 for (let i = 3; i <= 10; i++) {
            setTimeout(function () {
                console.log(i)
            }
            );
        }        //这里输出3 4 5 6 7 8 9 10

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值