DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> JavaScript基礎知識 >> js變量提升深入理解
js變量提升深入理解
編輯:JavaScript基礎知識     

JavaScript的函數定義有個特點,它會先掃描整個函數體的語句,把所有申明的變量“提升”到函數頂部:

'use strict';

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

雖然是strict模式,但語句var x = 'Hello, ' + y;並不報錯,原因是變量y在稍後申明了。但是alert顯示Hello, undefined,說明變量y的值為undefined。這正是因為JavaScript引擎自動提升了變量y的聲明,但不會提升變量y的賦值。

對於上述foo()函數,JavaScript引擎看到的代碼相當於:

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

由於JavaScript的這一怪異的“特性”,我們在函數內部定義變量時,請嚴格遵守“在函數內部首先申明所有變量”這一規則。最常見的做法是用一個var申明函數內部用到的所有變量:

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

以上這篇js變量提升深入理解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved