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