JavaScript Let

ECMAScript 2015

ES2015 ÒýÈëÁËÁ½¸öÖØÒªµÄ JavaScript йؼü´Ê£ºlet ºÍ const¡£

ÕâÁ½¸ö¹Ø¼ü×ÖÔÚ JavaScript ÖÐÌṩÁË¿é×÷ÓÃÓò£¨Block Scope£©±äÁ¿£¨ºÍ³£Á¿£©¡£

ÔÚ ES2015 ֮ǰ£¬JavaScript Ö»ÓÐÁ½ÖÖÀàÐ͵Ä×÷ÓÃÓò£ºÈ«¾Ö×÷ÓÃÓòºÍº¯Êý×÷ÓÃÓò¡£

È«¾Ö×÷ÓÃÓò

È«¾Ö£¨ÔÚº¯ÊýÖ®Í⣩ÉùÃ÷µÄ±äÁ¿ÓµÓÐÈ«¾Ö×÷ÓÃÓò¡£

ʵÀý

var carName = "porsche";

// ´Ë´¦µÄ´úÂë¿ÉÒÔʹÓà carName

function myFunction() {
  // ´Ë´¦µÄ´úÂëÒ²¿ÉÒÔʹÓà carName
}

Ç××ÔÊÔÒ»ÊÔ

È«¾Ö±äÁ¿¿ÉÒÔÔÚ JavaScript ³ÌÐòÖеÄÈκÎλÖ÷ÃÎÊ¡£

º¯Êý×÷ÓÃÓò

¾Ö²¿£¨º¯ÊýÄÚ£©ÉùÃ÷µÄ±äÁ¿ÓµÓк¯Êý×÷ÓÃÓò¡£

ʵÀý

// ´Ë´¦µÄ´úÂë²»¿ÉÒÔʹÓà carName

function myFunction() {
  var carName = "porsche";
  // code here CAN use carName
}

// ´Ë´¦µÄ´úÂë²»¿ÉÒÔʹÓà carName

Ç××ÔÊÔÒ»ÊÔ

¾Ö²¿±äÁ¿Ö»ÄÜÔÚËüÃDZ»ÉùÃ÷µÄº¯ÊýÄÚ·ÃÎÊ¡£

JavaScript ¿é×÷ÓÃÓò

ͨ¹ý var ¹Ø¼ü´ÊÉùÃ÷µÄ±äÁ¿Ã»Óпé×÷ÓÃÓò¡£

ÔÚ¿é {} ÄÚÉùÃ÷µÄ±äÁ¿¿ÉÒÔ´Ó¿éÖ®Íâ½øÐзÃÎÊ¡£

ʵÀý

{ 
  var x = 10; 
}
// ´Ë´¦¿ÉÒÔʹÓà x

ÔÚ ES2015 ֮ǰ£¬JavaScript ÊÇûÓпé×÷ÓÃÓòµÄ¡£

¿ÉÒÔʹÓà let ¹Ø¼ü´ÊÉùÃ÷ÓµÓпé×÷ÓÃÓòµÄ±äÁ¿¡£

ÔÚ¿é {} ÄÚÉùÃ÷µÄ±äÁ¿ÎÞ·¨´Ó¿éÍâ·ÃÎÊ£º

ʵÀý

{ 
  let x = 10;
}
// ´Ë´¦²»¿ÉÒÔʹÓà x

ÖØÐÂÉùÃ÷±äÁ¿

ʹÓà var ¹Ø¼ü×ÖÖØÐÂÉùÃ÷±äÁ¿»á´øÀ´ÎÊÌâ¡£

ÔÚ¿éÖÐÖØÐÂÉùÃ÷±äÁ¿Ò²½«ÖØÐÂÉùÃ÷¿éÍâµÄ±äÁ¿£º

ʵÀý

var x = 10;
// ´Ë´¦ x Ϊ 10
{ 
  var x = 6;
  // ´Ë´¦ x Ϊ 6
}
// ´Ë´¦ x Ϊ 6

Ç××ÔÊÔÒ»ÊÔ

ʹÓà let ¹Ø¼ü×ÖÖØÐÂÉùÃ÷±äÁ¿¿ÉÒÔ½â¾öÕâ¸öÎÊÌâ¡£

ÔÚ¿éÖÐÖØÐÂÉùÃ÷±äÁ¿²»»áÖØÐÂÉùÃ÷¿éÍâµÄ±äÁ¿£º

ʵÀý

var x = 10;
// ´Ë´¦ x Ϊ 10
{ 
  let x = 6;
  // ´Ë´¦ x Ϊ 6
}
// ´Ë´¦ x Ϊ 10

Ç××ÔÊÔÒ»ÊÔ

ä¯ÀÀÆ÷Ö§³Ö

Internet Explorer 11 »ò¸üÔçµÄ°æ±¾²»Íêȫ֧³Ö let ¹Ø¼ü´Ê¡£

ÏÂ±í¶¨ÒåÁ˵ÚÒ»¸öÍêȫ֧³Ö let ¹Ø¼ü´ÊµÄä¯ÀÀÆ÷°æ±¾£º

Chrome 49 IE / Edge 12 Firefox 44 Safari 11 Opera 36
2016 Äê 3 ÔÂ 2015 Äê 7 ÔÂ 2015 Äê 1 ÔÂ 2017 Äê 9 ÔÂ 2016 Äê 3 ÔÂ

Ñ­»·×÷ÓÃÓò

ÔÚÑ­»·ÖÐʹÓà var£º

ʵÀý

var i = 7;
for (var i = 0; i < 10; i++) {
  // һЩÓï¾ä
}
// ´Ë´¦£¬i Ϊ 10

Ç××ÔÊÔÒ»ÊÔ

ÔÚÑ­»·ÖÐʹÓà let£º

ʵÀý

let i = 7;
for (let i = 0; i < 10; i++) {
  // һЩÓï¾ä
}
// ´Ë´¦ i Ϊ 7

Ç××ÔÊÔÒ»ÊÔ

ÔÚµÚÒ»¸öÀý×ÓÖУ¬ÔÚÑ­»·ÖÐʹÓõıäÁ¿Ê¹Óà var ÖØÐÂÉùÃ÷ÁËÑ­»·Ö®ÍâµÄ±äÁ¿¡£

ÔÚµÚ¶þ¸öÀý×ÓÖУ¬ÔÚÑ­»·ÖÐʹÓõıäÁ¿Ê¹Óà let ²¢Ã»ÓÐÖØÐÂÉùÃ÷Ñ­»·ÍâµÄ±äÁ¿¡£

Èç¹ûÔÚÑ­»·ÖÐÓà let ÉùÃ÷Á˱äÁ¿ i£¬ÄÇôֻÓÐÔÚÑ­»·ÄÚ£¬±äÁ¿ i ²ÅÊǿɼûµÄ¡£

º¯Êý×÷ÓÃÓò

ÔÚº¯ÊýÄÚÉùÃ÷±äÁ¿Ê±£¬Ê¹Óà var ºÍ let ºÜÏàËÆ¡£

ËüÃǶ¼Óк¯Êý×÷ÓÃÓò£º

function myFunction() {
  var carName = "porsche";   // º¯Êý×÷ÓÃÓò
}
function myFunction() {
  let carName = "porsche";   // º¯Êý×÷ÓÃÓò
}

È«¾Ö×÷ÓÃÓò

Èç¹ûÔÚ¿éÍâÉùÃ÷ÉùÃ÷£¬ÄÇô var ºÍ let Ò²ºÜÏàËÆ¡£

ËüÃǶ¼ÓµÓÐÈ«¾Ö×÷ÓÃÓò£º

var x = 10;       // È«¾Ö×÷ÓÃÓò
let y = 6;       // È«¾Ö×÷ÓÃÓò

HTML ÖеÄÈ«¾Ö±äÁ¿

ʹÓà JavaScript µÄÇé¿öÏ£¬È«¾Ö×÷ÓÃÓòÊÇ JavaScript »·¾³¡£

ÔÚ HTML ÖУ¬È«¾Ö×÷ÓÃÓòÊÇ window ¶ÔÏó¡£

ͨ¹ý var ¹Ø¼ü´Ê¶¨ÒåµÄÈ«¾Ö±äÁ¿ÊôÓÚ window ¶ÔÏó£º

ʵÀý

var carName = "porsche";
// ´Ë´¦µÄ´úÂë¿ÉʹÓà window.carName

Ç××ÔÊÔÒ»ÊÔ

ͨ¹ý let ¹Ø¼ü´Ê¶¨ÒåµÄÈ«¾Ö±äÁ¿²»ÊôÓÚ window ¶ÔÏó£º

ʵÀý

let carName = "porsche";
// ´Ë´¦µÄ´úÂë²»¿ÉʹÓà window.carName

Ç××ÔÊÔÒ»ÊÔ

ÖØÐÂÉùÃ÷

ÔÊÐíÔÚ³ÌÐòµÄÈκÎλÖÃʹÓà var ÖØÐÂÉùÃ÷ JavaScript ±äÁ¿£º

ʵÀý

var x = 10;

// ÏÖÔÚ£¬x Ϊ 10
 
var x = 6;

// ÏÖÔÚ£¬x Ϊ 6

Ç××ÔÊÔÒ»ÊÔ

ÔÚÏàͬµÄ×÷ÓÃÓò£¬»òÔÚÏàͬµÄ¿éÖУ¬Í¨¹ý let ÖØÐÂÉùÃ÷Ò»¸ö var ±äÁ¿ÊDz»ÔÊÐíµÄ£º

ʵÀý

var x = 10;       // ÔÊÐí
let x = 6;       // ²»ÔÊÐí

{
  var x = 10;   // ÔÊÐí
  let x = 6;   // ²»ÔÊÐí
}

ÔÚÏàͬµÄ×÷ÓÃÓò£¬»òÔÚÏàͬµÄ¿éÖУ¬Í¨¹ý let ÖØÐÂÉùÃ÷Ò»¸ö let ±äÁ¿ÊDz»ÔÊÐíµÄ£º

ʵÀý

let x = 10;       // ÔÊÐí
let x = 6;       // ²»ÔÊÐí

{
  let x = 10;   // ÔÊÐí
  let x = 6;   // ²»ÔÊÐí
}

ÔÚÏàͬµÄ×÷ÓÃÓò£¬»òÔÚÏàͬµÄ¿éÖУ¬Í¨¹ý var ÖØÐÂÉùÃ÷Ò»¸ö let ±äÁ¿ÊDz»ÔÊÐíµÄ£º

ʵÀý

let x = 10;       // ÔÊÐí
var x = 6;       // ²»ÔÊÐí

{
  let x = 10;   // ÔÊÐí
  var x = 6;   // ²»ÔÊÐí
}

ÔÚ²»Í¬µÄ×÷ÓÃÓò»ò¿éÖУ¬Í¨¹ý let ÖØÐÂÉùÃ÷±äÁ¿ÊÇÔÊÐíµÄ£º

ʵÀý

let x = 6;       // ÔÊÐí

{
  let x = 7;   // ÔÊÐí
}

{
  let x = 8;   // ÔÊÐí
}

Ç××ÔÊÔÒ»ÊÔ

ÌáÉý

ͨ¹ý var ÉùÃ÷µÄ±äÁ¿»áÌáÉýµ½¶¥¶Ë¡£Èç¹ûÄú²»Á˽âʲôÊÇÌáÉý£¨Hoisting£©£¬ÇëѧϰÎÒÃǵÄÌáÉýÕâÒ»Õ¡£

Äú¿ÉÒÔÔÚÉùÃ÷±äÁ¿Ö®Ç°¾ÍʹÓÃËü£º

ʵÀý

// ÔÚ´Ë´¦£¬Äú¿ÉÒÔʹÓà carName
var carName;

Ç××ÔÊÔÒ»ÊÔ

ͨ¹ý let ¶¨ÒåµÄ±äÁ¿²»»á±»ÌáÉýµ½¶¥¶Ë¡£

ÔÚÉùÃ÷ let ±äÁ¿Ö®Ç°¾ÍʹÓÃËü»áµ¼Ö ReferenceError¡£

±äÁ¿´Ó¿éµÄ¿ªÍ·Ò»Ö±´¦ÓÚ¡°ÔÝʱËÀÇø¡±£¬Ö±µ½ÉùÃ÷Ϊֹ£º

ʵÀý

// ÔÚ´Ë´¦£¬Äú²»¿ÉÒÔʹÓà carName
let carName;
VUE