varがスコープが所属再定義再割り当て:関数スコープを、
変数のみletコマンド、ブロックスコープブロック内で有効と宣言してみましょう。
constのは、一定の読み取り専用を宣言、定数の一回宣言された値を変更することはできません。
ポータルます。https://www.runoob.com/w3cnote/es6-let-const.html
比較:範囲:VAR:関数スコープので、以下、VaRのtotalPriceグローバル;せ、CONSTは、範囲内の場合にのみ条件を作用、ブロックレベルの範囲です。
= 10.価格VAR; VAR COUNT = 10; IF(COUNT> 5){ totalPrice VAR = 0.9 * 10; はconsole.log( `totalPriceのVAR:totalPrice} {$`); } にconsole.log(totalPrice); // 成功ここでは、出力9 totalPriceは、グローバル変数にアクセスすることができるということです
= 10.価格VAR、 VAR COUNT = 10; IF(COUNT> 5。){ totalPriceましょう = 0.9×10; はconsole.log( `totalPriceてみましょう:totalPrice} {$`); } ; //にconsole.log(totalPrice)しますエラー(キャッチされないにReferenceError:totalPriceが定義されていない)、ここでtotalPriceは、ブロックレベルの変数をさせることです、外部アクセスできない
比較II:範囲:次のコードのみ宣言型が同じ、VARサポートされtotalPriceを再割り当てする再割り当て、及びtotalPrice、最初のグローバル変数にさせ、第二のブロックのみ、ステージに作用していますしたがって、最終的な出力0
価格= 10でした。 カウント数= 10でした。 = 0合計金額でした。 (>カウント5){場合 合計価格だった= 10 * 0.9; console.log( `合計価格だった:$ {合計金額}「); // 9 } にconsole.log(合計金額)。// 9
VAR価格= 10; VAR数= 10; totalPrice = 0ましょう。 もし{(5>カウント)させtotalPrice = 10 * 0.9。 console.log( `せtotalPrice:$ {totalPrice}`)。// 9 } にconsole.log(totalPrice)。// 0
比較3:VAR、聞かせて、CONST:それは再割り当てすることはできませんが、それはその属性値を変更することができ、違いとして、ターゲットのconstノート、割り当て、定義
名前= VAR "日"; VAR名= "Sun2は、"; //再定義することができる 名前= "黎平を"; //再割り当てすることができます はconsole.log( `VAR名:$ {名前}`); // VAR 名前:黎平は 聞かせて年齢= 10; //年齢= 20でみましょう; //は間違っている、再定義することはできません 年齢= 22; //再割り当てすることができる にconsole.log( `年齢みましょう:$ { `年齢を}); / / LET年齢:22 CONSTセックス= "女性"; // constのセックス= "M"; //は、間違っていることを再定義することができない 、//は間違って再割り当てすることはできません; //性別= "男性" はconsole.logを( `constの性別:$ {性別 }`); // F
第四点は:コントロールの属性を変更します。
製品= {constの 名前: "電話" 価格:5999 }; //属性の変更することができ 、製品を。価格= 8999; はconsole.log(JSON.stringify(製品)); // { "名": "電話"、 " 。価格":8999 } //あなたが凍結:(ターゲットを凍結するために使用する方法であるように、製品を変更しない場合) のconst = product2のObject.freeze({ 名:"電話」、価格:5999 }); product2。価格= 9999; コンソール。ログイン(JSON.stringify(product2)); // { "名": " 電話"、"価格。":5999 }
第五:実際のアプリケーション・プロセスの詳細
(のためのVAR I、Iは<5; = 0 Iは++){ にconsole.log(VAR `Iは$` {I} IS); //これは出力0,1,2,3,4で のsetTimeout(関数(){ コンソール.logの( `VAR iは$ {ある ` I}); // この意志出力5. 5 }、1000); } はconsole.log(私は$ `` {I})であり; //出力5はなり にconsole.log ( `---------------のsetTimeoutデジタル出力0-4を解決------------------------- `-----)は、 (のためのlet I = 0;私は<5; Iは++){ にconsole.logを(` iはLET $ `{I}); //これは出力0,1,2,3であり、図4 のsetTimeout(関数(){ にconsole.log( `LET私は` {I})$であり; //これは出力0,1,2,3,4である }、1000); }
第六:同じ分析:メソッドを実行するときに[1]、I = 3が持っているので、あなたは2,3を聞かせすることができ、出力タイプを変更したい場合は、出力3であり、
VaRのA = []; ため(VAR I = 0; iは3 '; iは++){ [I] =関数(){にconsole.log(I)} } [1](); // 3 [2](); // 3
第七:ときに、ブロックレベル要素
10 = VAR; IF(1){ A = 100;のみ現在のブロックを見つけるために、割り当てに、宣言せ含む//ブロックレベル要素 にconsole.log(A); //ので、ここで与えられたが、あろう せ= 。1; にconsole.log(A); }
第八:可変リフト:
console.log(ABC); //未定義、可変リフト、実際の構文解析します。var ABC;にconsole.log(ABC); ABC = 10; VARのABC = 10; //コンソール(NUM); //が間違っていること 聞かせてNUM = 10; 間違って//console.log(filename);// のconstファイル名= "abc.txt"。
最後に書かれた:使用するだけ指示よりも、Baiduは、容易に理解することができ、さらなる研究の原則に従います