函式宣告和函式表示式的區別
題 1:
functionfoo(){
functionbar(){
return3;
}
returnbar();
functionbar(){
return8;
}
}
alert(foo());
題 2:
functionfoo(){
varbar = function(){
return3;
};
returnbar();
varbar = function(){
return8;
};
}
alert(foo());
題 3:
alert(foo());
functionfoo(){
varbar = function(){
return3;
};
returnbar();
varbar = function(){
return8;
};
}
題 4:
functionfoo(){
returnbar();
varbar = function(){
return3;
};
varbar = function(){
return8;
};
}
alert
(foo());
如果你的答案不是8、3、3和 [Type Error: bar is not a function] 的話,就繼續往下讀吧……(即使答對了也要繼續讀哦)
什麼是 Function Declaration(函式宣告)?
Function Declaration 可以定義命名的函式變數,而無需給變數賦值。Function Declaration 是一種獨立的結構,不能巢狀在非功能模組中。可以將它類比為 Variable Declaration(變數宣告)。就像 Variable Declaration 必須以“var”開頭一樣,Function Declaration 必須以“function”開頭。
e.g.
functionbar(){
return3;
}
ECMA 5(13.0)定義語法:
function Identifier ( FormalParameterList[opt] ) { FunctionBody }
函式名在自身作用域和父作用域內是可獲取的(否則就取不到函數了)。
functionbar(){
return3;
}
bar()//3
bar//function
什麼是 Function Expression(函式表示式)?
Function Expression 將函式定義為表示式語句(通常是變數賦值)的一部分。通過 Function Expression 定義的函式可以是命名的,也可以是匿名的。Function Expression 不能以“function”開頭(下面自呼叫的例子要用括號將其括起來)。
e.g.
//anonymous function expression
vara = function(){
return3;
}
//named function expression
vara = functionbar(){
相關推薦
javascript中函式宣告和函式表示式的區別
1.js中函式表示式的定義 表示式(expression)JavaScript中的一個短語,javascript會將其計算(evaluate)出一個結果。程式中的常量是一個最簡單的表示式。變數名
JS函式宣告和函式表示式的區別
另一方面,仔細看一看產生規則也會發現,唯一可能讓Expression(表示式)出現在Block(塊)中情形,就是讓它作為ExpressionStatement(表示式語句)的一部分。但是,規範明確規定了ExpressionStatement(表示式語句)不能以關鍵字function開頭。而這實際上就是
函式宣告和函式表示式之間的區別
函式表示式是javascript中的一個既強大容易令人困惑的特性 《javascript高階程式設計》 定義函式的方式有兩種 //指定函式名的方式1.function sayHi(){ } 以上的函式宣告方式一個重要的特徵就是函式宣告提升,意思是在執行程式碼之前會先讀取函式宣告,意味著
javascript的執行順序/函式宣告和函式表示式的區別
例子: function myfunc () { alert(”hello”); }; myfunc(); //這裡呼叫myfunc,輸出yeah而不是hello function myfunc () { alert(”yeah”); }; myfunc(); //這裡呼叫
函式宣告和函式表示式區別
定義函式的方法 定義函式的方法主要有三種: 函式宣告(Function Declaration)函式表示式Function Expression)new Function建構函式 其中,經常使用的是函式宣告和函式表示式的函式定義方法,這兩種方法有著很微妙的區別和聯絡,而
詳解Javascript 函式宣告和函式表示式的區別
Javascript Function無處不在,而且功能強大!通過Javascript函式可以讓JS具有面向物件的一些特徵,實現封裝、繼承等,也可以讓程式碼得到複用。但事物都有兩面性,Javascript函式有的時候也比較“任性”,你如果不瞭解它的“性情”,它很
JavaScript函式宣告和函式表示式區別
在定義函式時,我們一般使用下面這兩種方法: 用函式宣告建立的函式: function a() { }用函式表示式建立的函式: var b = function() { }當我們執
在變數作用域方面,函式宣告和函式表示式有什麼區別?
函式宣告提升,在函式宣告時定義好作用域; 函式表示式,只是變數名提升,隨著變數的改變,作用域也改變。 詞法環境with,和try…catch…不會影響函式宣告的變數作用域,但會影響函式表示式的變數作
JS中函式宣告和函式表示式的區別
review專案程式碼時,不同JS檔案之間在沒有相互引用的情況下,可以使用對方的方法,上網查了一下原因如下:在<body>標籤結束之前以下面的方式引入兩個js檔案<script src="a.js"></script> <script
函式宣告和函式表示式的區別
題 1: functionfoo(){ functionbar(){ return3; } returnbar(); functionbar(){ return8; } } alert(foo());
Javascript 函式宣告和函式表示式的區別
Javascript Function無處不在,而且功能強大!通過Javascript函式可以讓JS具有面向物件的一些特徵,實現封裝、繼承等,也可以讓程式碼得到複用。但事物都有兩面性,Javascript函式有的時候也比較“任性”,你如果不瞭解它的“性情”,
eval及函式宣告和函式表示式
1,eval:將一個物件行使額字串轉換為物件 { name: 'Jim' ,age :19}==>語法錯誤 //使用()將其轉化成表示式,{}不再是語句塊了,就是物件了 ->var o= eval( "( { name : 'Jim' ,age :19 } )"} //在js中有
JS-函式宣告 和 函式表示式
問題: 1, function foo() {}; 2, var foo = function () {}; 1,上面的語法是宣告,
函式宣告和函式表示式——函式宣告的宣告提前
定義函式的方法主要有三種: 1、函式宣告; 2、函式表示式; 3、new Function建構函式 函式宣告的經典格式: function functionName(arg1,arg2,...){...} 函式表示式: var variable = functi
函式宣告和函式表示式
建議使用函式宣告代替函式表示式,原因: 函式宣告是可命名的,所以他們在呼叫棧中更容易識別。此外,函式宣告會把整個函式提升(hoisted),而函式表示式只會把函式的引用變數名提升。這條規則使得箭頭函式
JS函式-函式宣告和函式表示式之間的恩怨
“函式宣告”和“函式表示式”其實說白了 就是定義函式的方式 函式宣告: function 函式名(){.....}通過上面方式定義的函式就是函式宣告 函式表示式:通過函式表示式定義函式的方式比較
javascript立即執行函式與函式宣告和函式表示式
javascript和其他程式語言相比比較隨意,所以javascript程式碼中充滿各種奇葩的寫法,有時霧裡看花,當然,能理解各型各色的寫法也是對javascript語言特性更進一步的深入理解。( function(){…} )()和( function (){…} () )
js學習(16)----函式宣告和函式作為引數
1.函式宣告和函式表示式 函式宣告需要被呼叫才會執行相應的內容,而函式表示式則相當於呼叫了函式。 如下: // 這是函式宣告,沒有看到;號 function sum(num1, num2) { // 函式體 } // 這是函式表示式 var
JS函式宣告與函式表示式的區別
函式宣告與函式表示式的區別 前面我們已經說了兩種定義函式的方式:函式宣告與函式表示式。那麼這兩種方式有區別嗎,還是一樣的呢?下面我們來進一步探討探討。 下面我們定義了兩個函式分別為 hello 和 hi,前者採用函式宣告,後者採用函式表示式,然後再呼叫,如下: func
JavaScript函式宣告與函式表示式的區別
函式宣告與函式表示式的區別 函式宣告與函式表示式定義函式看似相同,實際上在解析器向執行環境中載入資料時,解析器會率先讀取函式宣告,並使其在執行任何程式碼之前可用(可以訪問);至於函式表示式,則必須等到解析器執行到他所在的程式碼行,才會真正被解釋執行。 換句話說,就是通過函式宣告定義的