let var 笔记

2019-03-06  本文已影响0人  程一刀

let var 区别

1.不存在变量提升
var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined
2.暂时性死区
只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。
3.let 不允许重复性声明

        // 0  
        var testggg = function () {
            var arr = []
            for(var i = 0; i < 5; i++){
                arr.push(function () {
                    return i*i
                })
            }
            return arr
        }

        var testg = testggg();
        console.log(testg[1]())  // 25


        //1.
        var test = function () {
            var arr = []
            for(var i = 0; i < 5; i++){
                arr.push(function (n) {
                    return function () {
                        return n * n
                    }
                }(i))
            }
            return arr
        }
        var test1 = test()
        console.log(test1[0]())  // 0



        //2.立即执行函数
        var testss = function () {
            var arr = []
            for(var i = 0; i < 5; i++){
                arr.push(function (n) {
                    return n*n
                }(i))
            }
            return arr
        }
        var testssss = testss()
        console.log(testssss[2]) //4
        

http://es6.ruanyifeng.com/#docs/let

上一篇 下一篇

猜你喜欢

热点阅读