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

首頁 > 語言 > JavaScript > 正文

運算符&&的三個不同層次

2024-05-06 14:18:57
字體:
來源:轉載
供稿:網友

運算符可以從三個不同的層次進行理解。

第一層理解

當操作數都是布爾值時,“&&”對兩個值執行布爾與(AND)操作。

代碼如下:
x==0 && y==0 // 只有當x和y都是0時,才返回true

關系運算符的優先級比”&&”要高。

第二層理解

”&&“可以對真值和假值進行布爾與(AND)操作。(假值有false、null、undefined、0、NaN和”“)。在JS中任何希望使用布爾值的地方,表達式和語句都會將其當做真值或假值來對待,因此實際上”&&”并不總是返回true和false。

代碼如下:
null && true // =>null: 左操作數為假值,并將其返回,整個表達式為假
true && (5 - 3) // =>2: 左操作數為真,計算右操作數,并將其結果返回

第三層理解

當運算符要返回一個真值或假值時,根據左操作數的值會遇到兩種運算情況:運算符首先計算左操作數的值,如果計算結果是假值,那么整個表達式的結果一定也是假值,此時”&&“簡單的返回左操作數的值,而并不會對右操作數進行計算。如果左操作數是真值,”&&“將計算右操作數的值并將其返回作為整個表達式的計算結果。

代碼如下:
var o = {x:1};
var p = null;
o && o.x; // =>1 o是真值,返回o.x的值
p && p.y; // =>null: p是假值,將其返回,而不去計算p.y

”&&“的行為有時稱作”短路“,我們將會看到很多代碼利用了這一特性進行有條件地執行代碼。例如下面兩行代碼是完全等價的:

代碼如下:
if(a == b) stop();
(a == b) && stop();// 與上面語句等價

知識延伸

運算符“||”和”&&”一樣也具有一些復雜的行為。

用來從一組備選表達式中選出第一個真值表達式:

代碼如下:
// 先檢查a是否是真值,如果是,返回a,否則和a處理方式相同地處理b
// 如果b是真值返回b,否則返回5
var max = a || b || 5;

這種用法在函數中可以用來給參數提供默認值:

代碼如下:
function copy(o, p) {
p = p || {}; // 如果沒有向參數p傳遞對象,就使用新創建的對象
// ...
}

運算符優先級

同一優先級的運算符,運算次序由結合方向所決定。

簡單記就是:! > 算術運算符 > 關系運算符 > && > || > 賦值運算符

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 青神县| 宁陕县| 汾西县| 梨树县| 吴堡县| 涡阳县| 九江县| 布尔津县| 堆龙德庆县| 余庆县| 阜南县| 梓潼县| 新营市| 望江县| 余姚市| 绥宁县| 秭归县| 晋江市| 卢氏县| 岳西县| 屏东县| 当涂县| 红桥区| 象州县| 江源县| 遂川县| 德格县| 萨嘎县| 台中市| 伊金霍洛旗| 天水市| 石台县| 华安县| 翼城县| 宣武区| 泽库县| 东阿县| 五原县| 聊城市| 息烽县| 黔东|