ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptのvar、let、constの違いは何ですか

JavaScriptのvar、let、constの違いは何ですか

清浅
清浅オリジナル
2019-04-22 15:05:213672ブラウズ

var、let、const の違いは、var の変数はコードが実行される前に宣言され、作業スコープは現在の実行のコンテキスト内にあることです。let は変数の作成を許可しますが、そのブロック内でのみ動作します。 const と let の類似点は何ですか 唯一の違いは、const で定義された変数は変更できないことです

この記事では主に var、let、const の違いを JavaScript (ES6) での変数の作成方法を通して紹介します。 、一定の参考効果があるので参考になれば幸いです。

JavaScriptのvar、let、constの違いは何ですか

#【おすすめコース: JavaScript チュートリアル #】

var VS let

var と let の主な違いは、関数スコープの使用ではなく、ブロック スコープの使用です。これは、let キーワードを使用して作成された変数は、その変数が作成された「ブロック」内だけでなく、ネストされたブロック内でも使用できることを意味します。

function discountPrices (prices, discount) {
  var a = []
  for (var i = 0; i < prices.length; i++) {
    var discountedPrice = prices[i] * (1 - discount)
    var finalPrice = Math.round(discountedPrice * 100) / 100
    a.push(finalPrice)
  }  console.log(i) // 3  console.log(discountedPrice) // 150 
  console.log(finalPrice) // 150
  return a
  }

上記の例で、i、discountPrice、finalPrice を for ループの外で使用できるのは、それらが var および var で宣言されているためです。関数スコープです。 var を let に置き換えるとどうなるでしょうか?

function discountPrices (prices, discount) {
  let a = []
  for (let i = 0; i < prices.length; i++) {
    let discountedPrice = prices[i] * (1 - discount)
    let finalPrice = Math.round(discountedPrice * 100) / 100
    a.push(finalPrice)
  }  
  console.log(i) // 3  
  console.log(discountedPrice) // 150  
  console.log(finalPrice) // 150
  return a
  }
  discountPrices([100, 200, 300], .5) // 这儿会报错i未定义

このケースからわかることは、let を使用して宣言された変数は関数スコープではなくブロック スコープであるということです。したがって、「ブロック」の外で i (またはdiscountPriceまたはfinalPrice)にアクセスすると、エラーが報告されます。

次の違いは、変数のプロモーションに関連しています。ホイスティングの定義は、「JavaScript インタープリターは、いわゆる「作成」フェーズ中に、変数宣言をデフォルト値の未定義に割り当てます。

例:

function discountPrices (prices, discount) {  
console.log(discounted) // undefined
  var a = []
  for (var i = 0; i < prices.length; i++) {
    var discountedPrice = prices[i] * (1 - discount)
    var finalPrice = Math.round(discountedPrice * 100) / 100
    a.push(finalPrice)
  }
  console.log(i) // 3
  console.log(discountedPrice) // 150
  console.log(finalPrice) // 150
  return a}

If変数を宣言する前に、未定義の変数 (var を使用して宣言された変数など) の代わりに let を使用して変数を宣言すると、プログラムはエラーを報告します

function discountPrices (prices, discount) {  
console.log(discounted) // 错误
  let a = []
  for (let i = 0; i < prices.length; i++) {
    let discountedPrice = prices[i] * (1 - discount)
    let finalPrice = Math.round(discountedPrice * 100) / 100
    a.push(finalPrice)
  }
  console.log(i) // 3
  console.log(discountedPrice) // 150
  console.log(finalPrice) // 150
  return a}

結論は次のとおりです#var : 変数宣言はコードが実行される前に処理され、そのスコープは現在の実行コンテキスト内にあります。

let: let ステートメントを使用すると、スコープがブロックに制限された変数を作成できます。

let VS const

var と let の違いは理解できたところで、const はどうなるのでしょうか? const はほぼ同じであることがわかります。 let. しかし、唯一の違いは、 const を使用して変数に値が割り当てられると、新しい値に再割り当てすることはできないということです。

let name = &#39;Tyler&#39;
const handle = &#39;tylermcginnis&#39;
name = &#39;Tyler McGinnis&#39; //正确
handle = &#39;@tylermcginnis&#39; //错误

上記から、let で宣言された変数は再割り当てできることがわかります。 , しかし、const で宣言された変数はできません。したがって、変数を不変にしたい場合は、const で宣言できます。ただし、変数を const で宣言しても、それが不変であることを意味するわけではありません。たとえば、再割り当てできないだけです。 :

const person = {
  name: &#39;Kim Kardashian&#39;
  }
person.name = &#39;Kim Kardashian West&#39; // 正确
person = {} // 错误

したがって、const を使用する場合でも、オブジェクトを宣言しても、そのプロパティを変更できないという意味ではなく、新しい値に再割り当てできないことを意味するだけです。

概要:以上がこの記事の全内容です。皆様のお役に立てれば幸いです。

以上がJavaScriptのvar、let、constの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。