Baseline Widely available
let
æã¯ãããã¯ã¹ã³ã¼ãã®ãã¼ã«ã«å¤æ°ã宣è¨ãã¾ããä»»æã§å¤ã代å
¥ãã¦åæåã§ãã¾ãã
let x = 1;
if (x === 1) {
let x = 2;
console.log(x);
// Expected output: 2
}
console.log(x);
// Expected output: 1
æ§æ
let name1;
let name1 = value1;
let name1 = value1, name2 = value2;
let name1, name2 = value2;
let name1 = value1, name2, /* â¦, */ nameN = valueN;
弿°
nameN
宣è¨ãã夿°ã¾ãã¯è¤æ°ã®å¤æ°ã®ååã§ãããããã㯠JavaScript ã®æ£å¼ãªèå¥åã§ããå¿ è¦ãããã¾ãã
valueN
çç¥å¯
宣è¨ããã夿°ãã¨ã«ãä»»æã§åæå¤ã JavaScript ã®æ£å¼ãªå¼ã§æå®ãããã¨ãã§ãã¾ãã
æ§é åè§£æ§æã夿°ã®å®£è¨ã«ä½¿ç¨ãããã¨ãã§ãã¾ãã
let { bar } = foo; // where foo = { bar: 10, baz: 12 };
// ããã¯ãå¤ã 10 ã® 'bar' ã¨ããååã®å¤æ°ã使ãã¾ãã
解説
let
ã使ç¨ãããã¨ã§ãããã使ç¨ããããããã¯ã®æã¾ãã¯å¼ã«ã¹ã³ã¼ããéå®ãã夿°ã宣è¨ãããã¨ãã§ãã¾ãããã㯠var
ãã¼ã¯ã¼ãã®ããã«ã夿°ããããã¯ã¹ã³ã¼ãã«é¢ä¿ãªããã°ãã¼ãã«ã颿°å
¨ä½ã®ãã¼ã«ã«ã«å®ç¾©ãããããªãã¨ã¯ããã¾ãããä»ã«ã var
㨠let
ã®éãã¯ãå¾è
ãå®£è¨æã«å°éããå¾ã§ããã¢ã¯ã»ã¹ã§ããªãã¨ããç¹ãããã¾ãï¼ä¸æçãªãããã¾ã¼ã³ãåç
§ï¼ããã®ãããlet
宣è¨ã¯ä¸è¬ã«å·»ãä¸ããããªãã¨è¦ãªããã¦ãã¾ãã
const
ã¨åæ§ã«ãlet
ã¯ã°ãã¼ãã« (ä¸çªä¸ã®ã¹ã³ã¼ã) ã§å®£è¨ãããã¨ãã« window
ãªãã¸ã§ã¯ãã®ããããã£ãçæãã¾ããã
ãªã "let" ã¨ããååãé¸ã°ããã®ãã«ã¤ãã¦ã®èª¬æã¯ããªã³ã¯å ã® StackOverflow ã®è§£çã§è§£èª¬ããã¦ãã¾ãã
let
夿°ã®å¤ãã®èª²é¡ã¯ã使ç¨ãããã¹ã³ã¼ãã®å
é ã§å®£è¨ãããã¨ã§é¿ãããã¨ãã§ãã¾ãï¼ãããããã¨ã§ãèªã¿åãå¯è½ãªç¯å²ã«å½±é¿ãä¸ãããã¨ãããã¾ãï¼ã
var
ã¨ã¯ç°ãªããlet
ã¯å®£è¨ã§ãããæã§ã¯ãªããã®ã§ããã¤ã¾ããåç¬ã® let
宣è¨ããããã¯ã®æ¬ä½ã¨ãã¦ä½¿ç¨ãããã¨ã¯ã§ãã¾ããï¼å¤æ°ã«ã¢ã¯ã»ã¹ããæ¹æ³ããªãã®ã§ãæããã§ãï¼ã
if (true) let a = 1; // SyntaxError: Lexical declaration cannot appear in a single-statement context
ä¾ ã¹ã³ã¼ãã®ã«ã¼ã«
let
ã§å®ç¾©ããã夿°ã¯ãèªèº«ãå®ç¾©ããããããã¯ã¨ãããã«å«ã¾ãããµããããã¯ãã¹ã³ã¼ãã«ãªãã¾ãããã®ç¹ã«ãã㦠let
ã®ãµãã¾ã㯠var
ã«ã¨ã¦ãããä¼¼ã¦ãã¾ãã大ããªéãã¯ãvar
ã§å®ç¾©ããã夿°ã®ã¹ã³ã¼ãã¯ãããå«ãã§ãã颿°å
¨ä½ã«ãªãã¨ãããã¨ã§ãã
function varTest() {
var x = 1;
{
var x = 2; // åã夿°ã§ã!
console.log(x); // 2
}
console.log(x); // 2
}
function letTest() {
let x = 1;
{
let x = 2; // ç°ãªã夿°
console.log(x); // 2
}
console.log(x); // 1
}
ããã°ã©ã ã颿°ã®æä¸ä½ã«ããã¦ã¯ãlet
㯠var
ã¨ã¯ç°ãªããã°ãã¼ãã«ãªãã¸ã§ã¯ãä¸ã«ããããã£ãçæãã¾ãããä¾ã示ãã¾ãã
var x = "global";
let y = "global";
console.log(this.x); // "global"
console.log(this.y); // undefined
å宣è¨
åã颿°ããããã¯ã®ã¹ã³ã¼ãå
ã§åã夿°ãå宣è¨ãã㨠SyntaxError
ãçºçãã¾ãã
if (x) {
let foo;
let foo; // SyntaxError ãçºçãã¾ãã
}
switch
æã«ã¯ 1 ã¤ã®ãããã¯ãããªããããã¨ã©ã¼ãçºçãã¦ãã¾ãããããã¾ããã
let x = 1;
switch (x) {
case 0:
let foo;
break;
case 1:
let foo; // å宣è¨ã®ãã TypeError
break;
}
ãã ããææãã¦ããã¹ãéè¦ãªç¹ã¨ãã¦ãcase ç¯ã®ä¸ã§å ¥ãåã«ãããããã¯ã使ãã°ãæ°ãããããã¯ã¹ã³ã¼ãã®åå¥ç°å¢ãä½ããã¨ãã§ãããããä¸è¨ã®ãããªå宣è¨ã¨ã©ã¼ãçºçããªããªãã¾ãã
let x = 1;
switch (x) {
case 0: {
let foo;
break;
}
case 1: {
let foo;
break;
}
}
Firefox ã®ã¦ã§ãã³ã³ã½ã¼ã«ï¼ãã¼ã« > ã¦ã§ãéçºè
ãã¼ã« > ã¦ã§ãã³ã³ã½ã¼ã«ï¼ãªã©ã® REPL ã§å®é¨ãã¦ããã¨ãã«ãåãååã® let
宣è¨ã 2 ã¤ã®å
¥åã§å®è¡ããã¨ãåãå宣è¨ã¨ã©ã¼ãå¾ãããå ´åãããã¾ãããã®èª²é¡ã«ã¤ãã¦ã¯ãFirefox bug 1580891ã§ãããªããã£ã¹ã«ãã·ã§ã³ãã覧ãã ãããChrome ã³ã³ã½ã¼ã«ã§ã¯ãç°ãªã REPL å
¥åéã§ let
ãå宣è¨ãããã¨ãã§ãã¾ãã
let
ã¾ã㯠const
夿°ã¯ããããã¯ã®å§ã¾ãããã³ã¼ããå®è¡ããã¦å¤æ°ã宣è¨ããåæåãããè¡ã«å°éããã¾ã§ã¯ãã䏿çãªãããã¾ã¼ã³ã(TDZ) å
ã«ããã¨è¨ãã¾ãã
TDZ ã®ä¸ã«ããéã¯ã夿°ã¯å¤ã§åæåããã¦ããããä½ãã¢ã¯ã»ã¹ãããã¨ãã㨠ReferenceError
ãçºçãããã¨ã«ãªãã¾ãã夿°ã¯ã宣è¨ãããã³ã¼ãã®è¡ã¾ã§å®è¡ãããã¨ãå¤ã§åæåããã¾ãã夿°å®£è¨ã§åæå¤ãæå®ããªãã£ãå ´åã¯ãundefined
ã¨ããå¤ã§åæåããã¾ãã
var
ã§å®£è¨ããã夿°ã undefined
ã®å¤ã§å§ã¾ãã®ã¨ã¯ç°ãªãããããã®å¤æ°ã¯å®ç¾©ãè©ä¾¡ãããã¾ã§ã¯åæåããã¾ããã以ä¸ã®ã³ã¼ãã¯ãlet
㨠var
ã宣è¨ãããè¡ããåã®ã³ã¼ãã§ã¢ã¯ã»ã¹ãããå ´åã«ãç°ãªãçµæãå¾ããããã¨ã示ãã¦ãã¾ãã
{
// TDZ starts at beginning of scope
console.log(bar); // undefined
console.log(foo); // ReferenceError
var bar = 1;
let foo = 2; // End of TDZ (for foo)
}
ã³ã¼ããæ¸ãããé çªï¼ä½ç½®ï¼ã§ã¯ãªããå®è¡ã®é çªï¼æéï¼ã«ä¾åããã¾ã¼ã³ã§ããããããæéçãã¨ããè¨èã使ç¨ããã¦ãã¾ããä¾ãã°ãä¸è¨ã®ã³ã¼ãã¯ãlet
夿°ã使ç¨ãã颿°ã¯å¤æ°å®£è¨ã®åã«ç¾ãã¦ãã¾ããããã®é¢æ°ã TDZ ã®å¤ã§å¼ã³åºããã¦ãããããåä½ãã¾ãã
{
// TDZ ã¯ã¹ã³ã¼ãã®å
é ããå§ã¾ã
const func = () => console.log(letVar); // OK
// TDZ ã®ä¸ã§ã¯ãletVar ã«ã¢ã¯ã»ã¹ãã㨠`ReferenceError` ãçºçãã
let letVar = 3; // TDZ ã®çµãã (letVar)
func(); // TDZ ã®å¤ã§ã®å¼ã³åºã
}
䏿çãªãããã¾ã¼ã³ã¨ typeof
typeof
æ¼ç®åã使ç¨ãã¦ä¸æçãªãããã¾ã¼ã³å
ã®å¤æ°ã®åã確èªãããããã¨ããã¨ãReferenceError
ãçºçãã¾ãã
// 'ReferenceError' ãçºçãã¾ã
console.log(typeof i);
let i = 10;
ããã¯ã宣è¨ããã¦ããªã夿°ã«å¯¾ã㦠typeof
ã使ç¨ããå ´åãundefined
ã®å¤ã¨è¦ãªãããã®ã¨ã¯ç°ãªãã¾ãã
// 'undefined' ã¨è¡¨ç¤º
console.log(typeof undeclaredVariable);
䏿çãªãããã¾ã¼ã³ã¨åå¥ã¹ã³ã¼ãã¨çµã¿åãããä¾
ãã®ãããã¯ã® foo
ã¯ä¸æçãªãããã¾ã¼ã³ã®ä¸ã«ããã¾ãã
function test() {
var foo = 33;
if (foo) {
let foo = foo + 55; // ReferenceError
}
}
test();
å¤å´ã® var foo
ã«å¤ããããããif
ãããã¯ã¯å®è¡ããã¾ãã ããããåå¥ã¹ã³ã¼ãã«ããããã®å¤ã¯ãããã¯ã®å
é¨ã§ã¯å©ç¨ã§ãã¾ãããif
ãããã¯ã®å
å´ã«ããèå¥å foo
㯠let foo
ã«ãªãã¾ãã å¼ foo + 55
ã§ ReferenceError
ãçºçãã¾ãããã㯠let foo
ã®åæåãã¾ã å®äºãã¦ããªããã¤ã¾ã䏿çãªãããã¾ã¼ã³ã«ããããã§ãã
ãã®ç¾è±¡ã¯ã以ä¸ã®ãããªç¶æ³ã§æ··ä¹±ãããã¨ãããã¾ãã let n of n.a
ã¨ããå½ä»¤ã¯ããã§ã« for ã«ã¼ãã®ãããã¯ã®ãã©ã¤ãã¼ãã¹ã³ã¼ãå
ã«ããã¾ãã ãã®ãããèå¥å n.a
ã¯ãå½ä»¤èªä½ã®æåã®é¨å (let n
) ã«ãã 'n
' ãªãã¸ã§ã¯ãã®ãããã㣠'a
' ã¨ãã¦è§£æ±ºããã¾ãããã®å®£è¨æã«ã¯ã¾ã å°éã»å®äºãã¦ããªããããã¾ã 䏿çãªãããã¾ã¼ã³å
ã«ããã¨ã¿ãªããã¾ãã
function go(n) {
// n here is defined!
console.log(n); // { a: [1, 2, 3] }
for (let n of n.a) {
// ^ ReferenceError
console.log(n);
}
}
go({ a: [1, 2, 3] });
ãã®ã»ãã®å ´é¢
ãããã¯ã®ä¸ã§ä½¿ãã°ãlet
ã®å¤æ°ã®ã¹ã³ã¼ãã¯ãã®ãããã¯ã®ä¸ã«å¶éããã¾ããã¹ã³ã¼ããèªèº«ã®å®£è¨ããã颿°å
¨ä½ã«ãªã var
ã¨ã®éãã«æ³¨æãã¦ãã ããã
var a = 1;
var b = 2;
{
var a = 11; // ã¹ã³ã¼ãã¯ã°ãã¼ãã«
let b = 22; // ã¹ã³ã¼ã㯠if ãããã¯å
console.log(a); // 11
console.log(b); // 22
}
console.log(a); // 11
console.log(b); // 2
ããããä¸è¨ã® var
㨠let
宣è¨ã®çµã¿åããã¯ãvar
ããããã¯ã®å
é ã«é
ç½®ããã¦ãããããSyntaxError
ã«ãªãã¾ããããã«ãã£ã¦ã夿°ãæé»çã«å宣è¨ãããããã§ãã
let x = 1;
{
var x = 2; // å宣è¨ã®ãã SyntaxError
}
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4