javascript 用函數(shù)語句和表達式定義函數(shù)的區(qū)別詳解
使用javascript多年,寫過無數(shù)函數(shù),今天卻才真正弄明白兩種函數(shù)定義的區(qū)別,真是悲劇,寫下這個隨筆, 以時刻提醒自己要打好基礎(chǔ) , 一大把年紀了, 不能繼續(xù)懵懵懂懂了。
通常我們會看到以下兩種定義函數(shù)的方式:
// 函數(shù)語句
function fn(str)
{
console.log(str);
};
// 表達式定義
var fnx=function(str)
{
console.log(str+ ' from fnx');
};
以前都是憑借自己手指的感覺隨心所欲使用兩者 -_- || ,今天看了js基礎(chǔ), 總算是解決了心中對他們的困惑:
兩種方式都創(chuàng)建了新的函數(shù)對象, 但函數(shù)聲明語句的函數(shù)名是一個變量名, 變量指向函數(shù)對象, 和通過var聲明變量一樣,函數(shù)定義語句中的函數(shù)被顯示地提前到了腳本或函數(shù)的頂部, 因此它們在整個腳本和函數(shù)內(nèi)都是可見的,但是使用var 表達式定義函數(shù), 只有變量聲明提前了,變量初始化代碼仍然在原來的位置, 用函數(shù)語句創(chuàng)建的函數(shù), 函數(shù)名稱和函數(shù)體均被提前,所以我們可以在聲明它之前就使用它。
代碼例子如下:
console.log(typeof(fn)); // function
fn('abc'); // abc
console.log(typeof(fnx)); // undefined
if(fnx)
fnx('abc'); // will not execute
else
console.log('fnx is undefined'); // fnx is undefined
// 函數(shù)語句
function fn(str)
{
console.log(str);
};
// 表達式定義
var fnx=function(str)
{
console.log(str+ ' from fnx');
};
代碼很簡單, 希望和我之前一樣沒有弄明白兩者區(qū)別的同學能有所收獲 。
- js function定義函數(shù)使用心得
- js function定義函數(shù)的幾種不錯方法
- JavaScript中定義函數(shù)的三種方法
- JavaScript定義函數(shù)的三種實現(xiàn)方法
- 比較常見的javascript中定義函數(shù)的區(qū)別
- 淺談javascript:兩種注釋,聲明變量,定義函數(shù)
- 常用原生js自定義函數(shù)總結(jié)
- JavaScript 中定義函數(shù)用 var foo = function () {} 和 function foo()區(qū)別介紹
- javascript十個最常用的自定義函數(shù)(中文版)
- JS定義函數(shù)的幾種常用方法小結(jié)
相關(guān)文章
javascript 兼容FF的onmouseenter和onmouseleave的代碼
經(jīng)過測試發(fā)現(xiàn),例子1 在 ff下抖動的厲害,ie下稍微有點。 具體原因 其實就是 mouseout 的冒泡機制 引起的。2008-07-07javascript event在FF和IE的兼容傳參心得(絕對好用)
event在IE和FF不兼,下面為大家分享的是javascript event在FF和IE的兼容傳參心得,需要的朋友可以參考下2014-07-07file模式訪問網(wǎng)頁時iframe高度自適應解決方案
最近做到iframe的高度自適應這個問題;發(fā)現(xiàn)自己做的網(wǎng)頁是通過file方式訪問的,將網(wǎng)頁代碼放到apache下通過http協(xié)議訪問,在iframe加載的時候調(diào)用如下js方法:果然網(wǎng)頁高度能夠自適應(對于其他方案應該也有效果,我沒有注意去嘗試)感興趣的朋友可以了解下2013-01-01javascript 操作cookies及正確使用cookies的屬性
在 JS(JavaScript) 操作cookies比較復雜,在 ASP 里面我們只需要知道 cookie 的名稱、cookie 的值就行了,而 JS 里面,我們面對的是 cookie 的字符串,你自己編寫這個字符串寫入客戶端,然后自己解析這個字符串。2009-10-10layui結(jié)合form,table的全選、反選v1.0示例講解
今天小編就為大家分享一篇layui結(jié)合form,table的全選、反選v1.0示例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08一文搞懂JSON(JavaScript Object Notation)
Json 有兩種基本的結(jié)構(gòu),即 Json對象 和 Json 數(shù)組。通過 Json 對象和 Json 數(shù)組這兩種結(jié)構(gòu)的組合可以表示各種復雜的結(jié)構(gòu),今天通過本文給大家介紹JavaScript Object Notation的基本知識,感興趣的朋友一起看看吧2021-10-10