摘要:邏輯非可以應(yīng)用于中的任何值無論這個(gè)值是什么數(shù)據(jù)類型,這個(gè)操作符都會返回一個(gè)布爾值邏輯非操作符首相會將它的操作數(shù)轉(zhuǎn)化成一個(gè)布爾值,然后對其求反邏輯與可以應(yīng)用于任何類型的操作數(shù)在有一個(gè)操作數(shù)不是布爾值的情況下,邏輯與操作就不一定返回布爾值屬于短
邏輯非(!)
可以應(yīng)用于ECMAScript中的任何值
無論這個(gè)值是什么數(shù)據(jù)類型,這個(gè)操作符都會返回一個(gè)布爾值
邏輯非操作符首相會將它的操作數(shù)轉(zhuǎn)化成一個(gè)布爾值,然后對其求反
邏輯與(&&)可以應(yīng)用于任何類型的操作數(shù)
在有一個(gè)操作數(shù)不是布爾值的情況下,邏輯與操作就不一定返回布爾值
屬于短路操作
不能在邏輯與操作中使用未定義的值,會導(dǎo)致錯(cuò)誤
邏輯或(||)可以應(yīng)用于任何類型的操作數(shù)
如果有一個(gè)操作數(shù)不是布爾值,邏輯或也不一定返回布爾值
屬于短路操作
一些其他思考 當(dāng)同時(shí)有邏輯或和邏輯與時(shí),或者同時(shí)有多個(gè)與操作和同時(shí)有多個(gè)或操作時(shí)執(zhí)行順序是怎樣的?首先明確優(yōu)先級:! > && > ||
NaN && 1 || 0 // 0 :首先執(zhí)行NaN && 1,結(jié)果是NaN,然后執(zhí)行NaN || 0,最終結(jié)果是0
NaN || 1 && 0 // 0:首先執(zhí)行1 && 0,結(jié)果是0,然后執(zhí)行NaN || 0,最終結(jié)果是0
1 && NaN && 2 // NaN:按照從左到右的順序執(zhí)行,最終結(jié)果是NaN
總結(jié)幾個(gè)場景 1、邏輯或的運(yùn)用場景function test(num) { var newNum = num || 1 console.log(newNum) } test() // 1 test(4) // 4 test(0) // 1
傳的是空對象,求值結(jié)果為false,返回第二個(gè)操作數(shù)
傳的是數(shù)值4,對象,返回第一個(gè)操作數(shù)
傳的是數(shù)值0,求值結(jié)果是false,返回第二個(gè)操作數(shù)
2、邏輯與的運(yùn)用場景function test(obj) { var num = obj && obj.num && obj.num.count console.log(num) } test() //undefined test({}) //undefined test({num: {}}) // undefined test({num: {count: 1}}) // 1
第一個(gè)操作數(shù)返回undefined,不會對后面的操作數(shù)求值,直接返回undefined
第一個(gè)操作數(shù)返回“{}”,第二個(gè)操作數(shù)返回undefined,直接返回undefined
第一個(gè)操作數(shù)返回“{num: {}}”,第二個(gè)操作數(shù)返回“{}”,第三個(gè)操作數(shù)返回undefined,返回第三個(gè)操作數(shù)
返回最后一個(gè)操作數(shù)
3、邏輯與和或的一起運(yùn)用場景function test(obj) { var num = obj && obj.num && obj.num.count || 0 console.log(num) } test() //0 test({}) //0 test({num: {}}) // 0 test({num: {count: 1}}) // 1
相當(dāng)于console.log(undefined||0),返回第二個(gè)操作數(shù)
同上
同上
相當(dāng)于console.log(1||0),返回第一個(gè)操作數(shù)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/95269.html
摘要:前言是瀏覽器的內(nèi)置腳本語言。避免,在結(jié)構(gòu)生成之前調(diào)用節(jié)點(diǎn),而產(chǎn)生錯(cuò)誤 前言 JavaScript是瀏覽器的內(nèi)置腳本語言。當(dāng)網(wǎng)頁中嵌入了JavaScript腳本,瀏覽器加載網(wǎng)頁時(shí),就會執(zhí)行腳本,從而操作瀏覽器,實(shí)現(xiàn)各種動態(tài)效果 JavaScript代碼嵌入網(wǎng)頁的方法 1、元素直接嵌入代碼 function sayHello() { alert(hello!); ...
摘要:前言是瀏覽器的內(nèi)置腳本語言。避免,在結(jié)構(gòu)生成之前調(diào)用節(jié)點(diǎn),而產(chǎn)生錯(cuò)誤 前言 JavaScript是瀏覽器的內(nèi)置腳本語言。當(dāng)網(wǎng)頁中嵌入了JavaScript腳本,瀏覽器加載網(wǎng)頁時(shí),就會執(zhí)行腳本,從而操作瀏覽器,實(shí)現(xiàn)各種動態(tài)效果 JavaScript代碼嵌入網(wǎng)頁的方法 1、元素直接嵌入代碼 function sayHello() { alert(hello!); ...
摘要:如果存在一個(gè)同名的全局變量,這個(gè)全局變量也不會被重寫,除非同名的局部變量被聲明時(shí)使用關(guān)鍵字。 博客原文地址:Claiyre的個(gè)人博客 https://claiyre.github.io/博客園地址:http://www.cnblogs.com/nuannuan7362/如需轉(zhuǎn)載,請?jiān)谖恼麻_頭注明原文地址------------------------------------------...
摘要:結(jié)合我們的例子,子組件則會生成以下代碼到目前為止,對于普通插槽和作用域插槽已經(jīng)談的差不多了。下面我們將仔細(xì)談?wù)勥@塊的內(nèi)容。在看具體實(shí)現(xiàn)邏輯前,我們先通過一個(gè)例子來先了解下其基本用法然后進(jìn)行使用頁面展示效果如下看著好。本篇文章是細(xì)談 vue 系列第二篇了,上篇我們已經(jīng)細(xì)談了 vue 的核心之一 vdom,傳送門 今天我們將分析我們經(jīng)常使用的 vue 功能 slot 是如何設(shè)計(jì)和實(shí)現(xiàn)的,本文將圍...
摘要:注意事項(xiàng)聲明函數(shù)時(shí)候處理業(yè)務(wù)邏輯區(qū)分和單例的區(qū)別,配合單例實(shí)現(xiàn)初始化構(gòu)造函數(shù)大寫字母開頭推薦注意的成本。簡單工廠模式使用一個(gè)類通常為單體來生成實(shí)例。 @(書籍閱讀)[JavaScript, 設(shè)計(jì)模式] 常見設(shè)計(jì)模式 一直對設(shè)計(jì)模式不太懂,花了一下午加一晚上的時(shí)間,好好的看了看各種設(shè)計(jì)模式,并總結(jié)了一下。 設(shè)計(jì)模式簡介 設(shè)計(jì)模式概念解讀 設(shè)計(jì)模式的發(fā)展與在JavaScript中的應(yīng)用 ...
閱讀 2952·2023-04-25 19:20
閱讀 814·2021-11-24 09:38
閱讀 2066·2021-09-26 09:55
閱讀 2443·2021-09-02 15:11
閱讀 2075·2019-08-30 15:55
閱讀 3621·2019-08-30 15:54
閱讀 3159·2019-08-30 14:03
閱讀 2972·2019-08-29 17:11