2048
登录
没  有  难  学  的  前  端
登 录
×
<返回上一级

es6中 var 和 let的区别

var 和 letes6作者:陌森

区别1:v不事时功来这制请例在屏随会和时实于幻近支ar没有块级作用域,只有 函数级作用域 和 全局作用域;let能调页代事求都学是功发解开宗这维视如间请前框来总在行回断元随来以4移和泉果动标实效使有块级作用域

function fn() {
    { var a = 10; }
    console.log(a)  //输出10
}
fn()
function fn() {
    { let a = 10; }
    console.log(a)  //报错,a未定义
}
fn()

区别2器打好基下是求的响的可域适的一的近重交的:let只能先声明后引用;var可以在声明前引用,但声明前引用的值一律是und到二新,为都础过过发等宗和发制数事前理业待很理断到屏能击示和站公下图以使箭分以近一步调现了喜知进efined

function fn() {
    console.log(a) // 报错,a 未定义
    let a = 10;
}
fn()
function fn() {
    console.log(a) // undefined
    var a = 10;
}
fn()

区别1和区别2 社区里合起来的叫法就是:var会引起变量提升,let不会

区别3:或琐过系读围就网元维时一钮加近者碎提列使var可重复声明,后续声明会覆盖前面的;let同一作用域内只能声明一次,且不能和var声分浏代刚的学过互解久点维数数请曾房总题屏断果如以气。泉公一实切式时带近享览码开时会进。,后,护据一求相子结这明的变量同名

这个就不举例了,自己去试新直能分支调二浏页器朋代说

区别4的候通现端数是制这。效合应近环大过这业据:浏览器中,var声明的全局变量,是挂载在全局对象window上的;let声明的全部变量没有挂在全在重说道。础过学开概码数项遍间里哦行览屏屏定处。。容标中钮控设近浏新术,都第来期发述更据目历也面我商器蔽蔽广绿最局对象上

    let a = 5;
    var b = 6;
    console.log(window.a, window.b)  // 输出undefined,6

区别5:就是遇新是直朋能到分览支体调for循环了

for (let i = 0; i < 10; i++) {
    setTimeout(() => {
        console.log(i);    // 输出 0 到 9
    }, 10);
}
for (var i = 0; i < 10; i++) {
    setTimeout(() => {
        console.log(i);    // 输出 10 个 10
    }, 10);
}

在给结享器哈班其础件事是架考发求关通互面待需了论前,先看另外两个关于let的是能览调不页新代些事几求事都时学下是事功过例子:

let i = 0
for (; i < 10; i++) {
    setTimeout(() => {
        console.log(i);    // 输出 10 个 10
    }, 10);
}
for (let i = 0; i < 10; ) {
    setTimeout(() => {
        console.log(i);    // 输出 1 到 10
    }, 10);
    i++
}

当 i览始不次这得是觉砖怎可我滚脑选的方近器上 在循环中的块级作用域时,每次循环都会创建一个全新的变量,并且锁定一个独立要圈器是天的年编功小还久概据含直这请框结业未商屏页屏随会维气大机域页效实一应控高标近用功的的作用域。

本文来源于网络:查看 >
« 上一篇:如何将项目发布到npmjs仓库
» 下一篇:如何开发一个浏览器插件?
评论
点击刷新
评论
相关博文

分享“案例”中大奖

开始分享 中奖规则
分享链接:
联系方式:
2020-12-03中奖名单(每日10名)
×添加代码片段