鍍金池/ 問答/HTML/ chrome怎么判斷代碼運(yùn)行在es6還是es5

chrome怎么判斷代碼運(yùn)行在es6還是es5

function b(){
    'use strict';
    var a=0;
    {
        var a=1;
        console.log(a);
    }
    console.log(a);
}
b();
function c(){
    'use strict';
    let a=0;
    {
        let a=1;
        console.log(a);
    }
    console.log(a);
}
c();

直接在Chrome中運(yùn)行會(huì)輸出1110,為什么b()會(huì)判定在es5而c()判定在es6?就因?yàn)閏()有使用到let嗎?

回答
編輯回答
不歸路
首先我們所說的ES5 ES6他都只是ECMA Script技術(shù)委員會(huì)的技術(shù)規(guī)范,瀏覽器的更新會(huì)支持這種語法規(guī)范。然后ES6是對ES5的擴(kuò)充,新增了一些語法,并沒有廢棄var聲明變量?,F(xiàn)在大多數(shù)瀏覽器都支持ES6規(guī)范了,也就沒必要用var聲明白變量了
2017年1月27日 12:58
編輯回答
吃藕丑

es6引入了塊級作用域的概念,為了兼容過往版本,所以新增了let和const,這兩個(gè)是塊級作用域。

2018年1月30日 04:45
編輯回答
淚染裳

對于瀏覽器而言…是不管在es5還是es6的…只要是它支持的語法就都可以運(yùn)行吶…

所以只是let的作用噻…

2018年5月22日 05:10
編輯回答
青檸

所謂的es5和es6只是標(biāo)準(zhǔn)而已,
瀏覽器會(huì)自己實(shí)現(xiàn)標(biāo)準(zhǔn)定義的API,chrome應(yīng)該是沒有在檢測運(yùn)行的是es5或es6,它只是正常輸出而已,而如果你在不支持let語句的瀏覽器上運(yùn)行,應(yīng)該會(huì)報(bào)語法錯(cuò)誤

function b(){
    'use strict';
    var a=0;
    // 這個(gè)時(shí)候a===0,毫無疑問,作用域只有一個(gè)a
    {
        var a=1;
        // 這個(gè)時(shí)候a===1,且這個(gè)時(shí)候聲明的`a`已經(jīng)覆蓋了上一個(gè)`a`
        console.log(a);
    }
    // a===1
    console.log(a);
}
b();
function c(){
    'use strict';
    let a=0;
    // a===0
    {
        // a===1,當(dāng)由于使用的let,只在當(dāng)前塊狀作用域內(nèi)起效
        // 沒有影響上面定義的a
        let a=1;
        console.log(a);
    }
    // a===0
    console.log(a);
}
c();
2017年11月5日 22:35
編輯回答
孤星

這個(gè)和瀏覽器運(yùn)行es5和es6沒關(guān)系,和瀏覽器沒關(guān)系,只是let和var的區(qū)別,let有塊級作用域。es6 let

2017年12月28日 07:01