最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Javascript優(yōu)化技巧之短路表達(dá)式詳細(xì)介紹

 更新時間:2015年03月27日 16:47:53   投稿:junjie  
這篇文章主要介紹了Javascript優(yōu)化技巧之短路表達(dá)式詳細(xì)介紹,本文講解了什么是短路表達(dá)式,并給出了一些示例,需要的朋友可以參考下

什么是短路表達(dá)式?

短路表達(dá)式:作為"&&"和"||"操作符的操作數(shù)表達(dá)式,這些表達(dá)式在進(jìn)行求值時,只要最終的結(jié)果已經(jīng)可以確定是真或假,求值過程便告終止,這稱之為短路求值。這是這兩個操作符的一個重要屬性。

一個最簡單的例子:

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

foo = foo||bar;

這行代碼是什么意思?答案:

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

//如果foo存在,值不變,否則把bar的值賦給foo
if(!foo)
    foo = bar;

在javascript的邏輯運算中,0、""、null、false、undefined、NaN都會判定為false,而其他都為true。所以在上式的foo = foo||bar;中,||先計算第一個運算數(shù),如果可以被轉(zhuǎn)換成true,也就是表示foo已經(jīng)存在有值,那么返回左邊這個表達(dá)式的值,否則計算第二個運算數(shù)bar。

另外,即使||運算符的運算數(shù)不是布爾值,仍然可以將它看作布爾OR運算,因為無論它返回的值是什么類型,都可以被轉(zhuǎn)換為布爾值。

當(dāng)然,使用如下做法會更加嚴(yán)謹(jǐn):

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

if(foo)      //不夠嚴(yán)謹(jǐn)
 
if(!!foo)    //更為嚴(yán)謹(jǐn),!!可將其他類型的值轉(zhuǎn)換為boolean類型

可以測試一下:

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

var foo;
var number = 1;
var string = "string";
var obj = {};
var arr = [];
 
 
console.log(typeof(foo));  // undefined
console.log(typeof(number));  //number
console.log(typeof(string));  //string
console.log(typeof(obj));  //object  
console.log(typeof(arr));  //object
 
console.log(typeof(!!foo));  // boolean
console.log(typeof(!!number));  //boolean
console.log(typeof(!!string));  //boolean
console.log(typeof(!!obj));  //boolean
console.log(typeof(!!arr));  //boolean

利用這一點可以很好的符合,優(yōu)化javascript工程一文中提到的,使腳本少運行或者不運行,以達(dá)到優(yōu)化javascript的目的。但是需要注意的是,這樣寫幫我們精簡了代碼的同時,也帶來了代碼可讀性的降低的缺點。所以比較好的做好是添加是適當(dāng)?shù)淖⑨尅?/p>

相關(guān)文章

  • Bootstrap基本樣式學(xué)習(xí)筆記之表單(3)

    Bootstrap基本樣式學(xué)習(xí)筆記之表單(3)

    這篇文章主要介紹了Bootstrap學(xué)習(xí)筆記之表單基本樣式的相關(guān)資料,為大家分享了三種表單樣式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 微信小程序?qū)W習(xí)筆記之本地數(shù)據(jù)緩存功能詳解

    微信小程序?qū)W習(xí)筆記之本地數(shù)據(jù)緩存功能詳解

    這篇文章主要介紹了微信小程序?qū)W習(xí)筆記之本地數(shù)據(jù)緩存功能,結(jié)合實例形式分析了微信小程序wx.setStorage、wx.getStorage以及wx.removeStorage、wx.clearStorage針對數(shù)據(jù)緩存的存取、刪除等相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • js實現(xiàn)簡單選項卡功能

    js實現(xiàn)簡單選項卡功能

    這篇文章主要為大家詳細(xì)介紹了使用JS實現(xiàn)簡單的選項卡功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • element-ui?dialog彈窗增加全屏功能(推薦)

    element-ui?dialog彈窗增加全屏功能(推薦)

    這篇文章主要介紹了element-ui?dialog彈窗增加全屏功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11
  • 淺談layer的Icon樣式以及一些常用的layer窗口使用方法

    淺談layer的Icon樣式以及一些常用的layer窗口使用方法

    今天小編就為大家分享一篇淺談layer的Icon樣式以及一些常用的layer窗口使用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • js實現(xiàn)雙人五子棋小游戲

    js實現(xiàn)雙人五子棋小游戲

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)雙人五子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • JS模板編譯的實現(xiàn)詳情

    JS模板編譯的實現(xiàn)詳情

    這篇文章主要介紹了JS模板編譯的實現(xiàn)詳情,編譯是一種格式變成另一種格式的過程。編譯會導(dǎo)致好的結(jié)果,比如書寫簡單的代碼,編譯出來復(fù)雜的代碼;或者提高代碼的使用性能
    2022-07-07
  • 基于casperjs和resemble.js實現(xiàn)一個像素對比服務(wù)詳解

    基于casperjs和resemble.js實現(xiàn)一個像素對比服務(wù)詳解

    這篇文章主要給大家介紹了關(guān)于基于casperjs和resemble.js實現(xiàn)一個像素對比服務(wù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • js日期范圍初始化得到前一個月日期的方法

    js日期范圍初始化得到前一個月日期的方法

    這篇文章主要介紹了js日期范圍初始化得到前一個月日期的方法,涉及javascript操作日期的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-05-05
  • 簡單使用webpack打包文件的實現(xiàn)

    簡單使用webpack打包文件的實現(xiàn)

    這篇文章主要介紹了簡單使用webpack打包文件的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10

最新評論

沅江市| 丰城市| 宁陵县| 左贡县| 和静县| 怀宁县| 周宁县| 新安县| 进贤县| 虹口区| 达拉特旗| 慈溪市| 秦安县| 绿春县| 贵德县| 肥乡县| 勃利县| 永仁县| 丰顺县| 昂仁县| 开化县| 新丰县| 浦江县| 高雄县| 凌海市| 伊宁市| 昌吉市| 文山县| 宾阳县| 富宁县| 高要市| 建德市| 阳高县| 天峻县| 特克斯县| 镇平县| 东至县| 宣恩县| 郁南县| 商河县| 贺兰县|