欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js變量提升深入理解

 更新時(shí)間:2016年09月16日 12:41:45   投稿:jingxian  
下面小編就為大家?guī)硪黄猨s變量提升深入理解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

JavaScript的函數(shù)定義有個(gè)特點(diǎn),它會(huì)先掃描整個(gè)函數(shù)體的語句,把所有申明的變量“提升”到函數(shù)頂部:

'use strict';

function foo() {
  var x = 'Hello, ' + y;
  alert(x);
  var y = 'Bob';
}
foo();

雖然是strict模式,但語句var x = 'Hello, ' + y;并不報(bào)錯(cuò),原因是變量y在稍后申明了。但是alert顯示Hello, undefined,說明變量y的值為undefined。這正是因?yàn)镴avaScript引擎自動(dòng)提升了變量y的聲明,但不會(huì)提升變量y的賦值。

對(duì)于上述foo()函數(shù),JavaScript引擎看到的代碼相當(dāng)于:

function foo() {
  var y; // 提升變量y的申明
  var x = 'Hello, ' + y;
  alert(x);
  y = 'Bob';
}

由于JavaScript的這一怪異的“特性”,我們?cè)诤瘮?shù)內(nèi)部定義變量時(shí),請(qǐng)嚴(yán)格遵守“在函數(shù)內(nèi)部首先申明所有變量”這一規(guī)則。最常見的做法是用一個(gè)var申明函數(shù)內(nèi)部用到的所有變量:

function foo() {
  var
    x = 1, // x初始化為1
    y = x + 1, // y初始化為2
    z, i; // z和i為undefined
  // 其他語句:
  for (i=0; i<100; i++) {
    ...
  }
}

以上這篇js變量提升深入理解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論