国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript 用函數(shù)語句和表達(dá)式定義函數(shù)的區(qū)別詳解

2019-11-20 21:18:55
字體:
供稿:網(wǎng)友

使用javascript多年,寫過無數(shù)函數(shù),今天卻才真正弄明白兩種函數(shù)定義的區(qū)別,真是悲劇,寫下這個隨筆, 以時刻提醒自己要打好基礎(chǔ) , 一大把年紀(jì)了, 不能繼續(xù)懵懵懂懂了。

通常我們會看到以下兩種定義函數(shù)的方式:

復(fù)制代碼 代碼如下:

// 函數(shù)語句
function fn(str)
{
  console.log(str);
};

// 表達(dá)式定義
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 表達(dá)式定義函數(shù), 只有變量聲明提前了,變量初始化代碼仍然在原來的位置, 用函數(shù)語句創(chuàng)建的函數(shù), 函數(shù)名稱和函數(shù)體均被提前,所以我們可以在聲明它之前就使用它。

代碼例子如下:

復(fù)制代碼 代碼如下:

   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é)能有所收獲 。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 西城区| 嘉义市| 青冈县| 宾阳县| 高密市| 曲麻莱县| 鹰潭市| 景宁| 施秉县| 昔阳县| 余庆县| 怀远县| 咸丰县| 丹棱县| 古浪县| 霍林郭勒市| 西华县| 无为县| 东乌珠穆沁旗| 嵩明县| 都江堰市| 平度市| 项城市| 博乐市| 蕲春县| 连云港市| 越西县| 汶上县| 韩城市| 吉木乃县| 古浪县| 都匀市| 扬州市| 迁安市| 达尔| 马鞍山市| 屏边| 上林县| 社会| 虞城县| 洱源县|