您好,登錄后才能下訂單哦!
函數定義
函數語句定義
function(a,b){ return a+b; }
表達式定義
var add = function(a,b){return a+b};
//函數表達式可以包含名稱,這在遞歸時很有用 var f = function fact(x){ if(x<=1) {return 1; }else { return x*faxt(x-1); } }
以表達式方式定義的函數,函數的名稱是可選的。如果函數定義表達式包含名稱,函數的局部作用域將會包含一個綁定到函數對象的名稱,實際上,函數的名稱將成為函數內部的一個局部變量
函數命名規范
1.like_this()第一個字符為小寫,當包含多個單詞時候,單詞以下劃線分割
2.likeThis()第一個字符為小寫,當包含多個單詞時候,除第一個單詞以外的單詞首字母使用大學字母
3.內部函數或私有函數,通常以一條下劃線為前綴
注:函數聲明語句‘被提前到外部腳本或外部函數作用于頂部,所以可以被在它定義之前出現的代碼所調用
以表達式方式定義函數前必須把它賦值給一個變量。所以表達式方式定義的函數在定義之前是無法調用的
函數返回值
嵌套函數
函數調用
作為函數調用
add(1,2)
根據ECMAScript3和非嚴格的ECMAScript5對函數調用的規定,調用上下文(this的值)是全局對象。然而在嚴格模式下,調用上下文則是undefined。
//定義一個函數且調用一個函數來確定當前腳本運行是否為嚴格模式
var strict = (function(){return this;}());
作為方法調用
var o = { m:1, n:2, add:function(){ this.result = this.m+this.n; } }
方法調用和函數調用的一個重大區別。----調用上下文
o.add() add的調用上下文為o,即:this
o.add() 等同于o['add']()
方法鏈:當方法并不需要返回值時候,最好直接返回this
this為一個關鍵字,不是變量,也不是屬性名。JavaScript語法不允許給this賦值
和變量不同,關鍵字this沒有作用于的限制,嵌套的函數不會從調用它的函數中繼承this,如果想訪問外部函數的this,var self= this;保存在變量中
如果嵌套函數作為函數調用,其this的值指向調用它的對象。如果作為函數調用,this不是全局對象(非嚴格模式),就是undefined(嚴格模式)
構造函數調用
var o = new Object();
構造函數調用和普通函數調用以及方法調用在實參處理。調用上下文和返回值等方面都有不同。
凡是沒有形參的構造函數調用都可以省略圓括號。
var o = new Object(); var o = new Object; //等價
構造函數調用創建一個新的空對象,這個對象繼承自構造函數的prototype屬性,這個函數試圖初始化這個新創建的對象,病將這個對象做為上下文,因此構造函數可以使用this關鍵字來引用這個新創建的對象。
new o.m() 調用的上下文并不是o.
構造函數并不使用return。如果構造函數顯示的使用return語句返回一個對象,那么調用表達式的值就是這個對象。如果構造函數但并沒有返回值,或者返回一個原始值,那么就會忽略返回值,同時使用新對象作為返回結果。
間接調用
call()
appy()
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。