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;