javascript中幾個容易混淆的概念總結,javascript混淆

來源:互聯網
上載者:User

javascript中幾個容易混淆的概念總結,javascript混淆

1.

var name = "The Window";var object = {name : "My Object",getName: function(){return this.name;}};

這裡的getName()方法只簡單地返回this.name 的值。以下是幾種調用object.getName()的
方式以及各自的結果。
object.getName(); //"My Object"
(object.getName)(); //"My Object"
(object.getName = object.getName)(); //"The Window",在非strict 模式下

第三種情況下(object.getName=object.getName);等價於var fn=(object.getName=object.getName);fn();

2.

function outputNumbers(count){for (var i=0; i < count; i++){//alert(i);}var i; //重新聲明變數alert(i); //計數}outputNumbers(5); 

JavaScript 從來不會告訴你是否多次聲明了同一個變數;遇到這種情況,它只會對後續的聲明視而不
見(不過,它會執行後續聲明中的變數初始化)。匿名函數可以用來模仿塊級範圍並避免這個問題。

3.

function(){//這裡是塊級範圍}(); //出錯!

這段代碼會導致語法錯誤,是因為JavaScript 將function 關鍵字當作一個函式宣告的開始,而函
數聲明後面不能跟圓括弧。然而,函數運算式的後面可以跟圓括弧。要將函式宣告轉換成函數運算式,
只要像下面這樣給它加上一對圓括弧即可。

(function(){//這裡是塊級範圍})();

4.

function outputNumbers(count){(function () {for (var i=0; i < count; i++){alert(i);}})();alert(i); //導致一個錯誤!}

在這個重寫後的outputNumbers()函數中,我們在for 迴圈外部插入了一個私人範圍。在匿名
函數中定義的任何變數,都會在執行結束時被銷毀。因此,變數i 只能在迴圈中使用,使用後即被銷毀。
而在私人範圍中能夠訪問變數count,是因為這個匿名函數是一個閉包,它能夠訪問包含範圍中的
所有變數。

這種技術經常在全域範圍中被用在函數外部,從而限制向全域範圍中添加過多的變數和函數。
一般來說,我們都應該盡量少向全域範圍中添加變數和函數。在一個由很多開發人員共同參與的大型
應用程式中,過多的全域變數和函數很容易導致命名衝突。而通過建立私人範圍,每個開發人員既可
以使用自己的變數,又不必擔心搞亂全域範圍。例如:

(function(){var now = new Date();if (now.getMonth() == 0 && now.getDate() == 1){alert("Happy new year!");}})();

把上面這段代碼放在全域範圍中,可以用來確定哪一天是1 月1 日;如果到了這一天,就會向用
戶顯示一條祝賀新年的訊息。其中的變數now 現在是匿名函數中的局部變數,而我們不必在全域範圍
中建立它。

以上所述就是本文的全部內容了,希望大家能夠喜歡。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.