Basic knowledge of javaScript (keep for myself)

來源:互聯網
上載者:User

標籤:

1. 函數運算式

JavaScript 函數可以通過一個運算式定義。eg. var x = function (a, b) {return a * b};

so: var x = function (a, b) {return a * b};
  var z = x(4, 3);

以上函數實際上是一個 匿名函數 (函數沒有名稱)。

函數儲存在變數中,不需要函數名稱,通常通過變數名來調用。

2. 在 JavaScript 中,很多時候,你需要避免使用 new 關鍵字。

3. 函數提升(Hoisting): 實際上是指擴充範圍。定義可在使用之後

4. 自調用函數: 實際上是匿名自我調用的函數

eg. 

<script>
(function () {
document.getElementById("demo").innerHTML = "Hello! 我是自己調用的";
})();
</script>

5. 函數是對象:

在 JavaScript 中使用 typeof 操作符判斷函數類型將返回 "function" 。

但,JavaScript 函數描述為一個對象更加準確。

6. JavaScript 函數有個內建的對象: arguments 對象.它包含了函數調用的參數數組。

7. 值傳遞參數:不會修改參數初始值;對象傳遞參數:類似引用,可作用於函數外部。

8. JavaScript中的函數調用還是有點兒說道的:分4種方法進行調用

     (1) 作為一個函數直接調用

eg.

function myFunction(a, b) {
    return a * b;
}
myFunction(10, 2);           // myFunction(10, 2) 返回 20

此時類似於:

function myFunction(a, b) {
    return a * b;
}
window.myFunction(10, 2);    // window.myFunction(10, 2) 返回 20

原因:以上函數並未指定對象,但屬於整個HTML頁面,所以說屬於全域對象,即屬於瀏覽器中的window對象。

  雖然這種函數調用的方式比較常用,但並不是好的編程習慣,會容易造成命名衝突。

  當函數沒有被自身的對象調用時, this 的值就會變成全域對象。

  (2)將函數作為對象中的方法調用(類似java中的對象)

eg.

var myObject = {
    firstName:"John",
    lastName: "Doe",
    fullName: function () {
        return this.firstName + " " + this.lastName;
    }
}
myObject.fullName();         // 返回 "John Doe"

此時,執行個體中 this 的值為 myObject 對象。

  (3)使用建構函式調用函數

如果函數調用前使用了 new 關鍵字, 則是調用了建構函式。

建構函式的調用會建立一個新的對象。新對象會繼承建構函式的屬性和方法。

  (4)利用apply()和call()方法調用函數

理由:在JavaScript中,函數也是對象,也擁有屬性和方法。也就是說,可以利用函數對象中的apply()方法或者call()方法調用函數對象。

eg.

function myFunction(a, b) {
    return a * b;
}
myFunction.call(myObject, 10, 2);      // 返回 20

myArray = [10,2];
myFunction.apply(myObject, myArray);   // 返回 20

在 JavaScript strict 模式(strict mode)下, 在調用函數時第一個參數會成為 this 的值, 即使該參數不是一個對象。

在 JavaScript 非strict 模式(non-strict mode)下, 如果第一個參數的值是 null 或 undefined, 它將使用全域對象替代。

9. 在JavaScript中,若變數在聲明時沒有var關鍵字,則為全域變數

10. JavaScript 閉包 (??)

 

 

Basic knowledge of javaScript (keep for myself)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.