在邏輯運算中,轉換為boolean類型的值后為false的情況: 0、""、null、false、undefined、NaN,其他都為true。
短路運算是利用邏輯運算中的 && 和 || 操作符,對應的有兩種不同的短路運算類型
|| 短路運算僅當前者不成立時才去執行后者
原理:||先計算第一個運算數,如果可以被轉換成true,則返回左邊這個表達式的值,否則計算第二個運算數。即使||運算符的運算數不是布爾值,任然可以將它看作布爾OR運算,因為無論它返回的值是什么類型,都可以被轉換為布爾值
通常用||短路運算來設置初始值,以下是一個ajax封裝的例子:
/* 封裝ajax函數 * @param {string}options.type http連接的方式,包括POST和GET兩種方式 * @param {string}options.url 發送請求的url * @param {boolean}options.async 是否為異步請求,true為異步的,false為同步的 * @param {object}options.data 發送的參數,格式為對象類型 * @param {function}options.success ajax發送并接收成功調用的回調函數 */ function ajax(options) { options = options || {}; options.method = options.method.toUpperCase() || "POST"; options.url = options.url || ""; options.async = options.async || true; options.data = options.data || null; options.success = options.success || function () {}; // ... }&&短路運算
僅當前者成立時采取執行后者
原理:&&,它先計算第一個表達式,若為假,就不會去處理第二個表達;否則繼續處理后繼表達式。從左到右選取表達式的第一個為非true的表達式的值,如果一直未找到則返回最后一個表達式的值
通常在回調中使用&&運算,例如:
function fn(callback) { // ... "function" === typeof callback && callback(); }
兩種短路運算都有一個共同的特點:如果第一個操作數能夠決定結果,那么就不會再對第二個操作數求值
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/84768.html
摘要:以上是使用轉換函數方法時會返回的值在用判斷的時候,首先執行了,然后判斷為真或假。對象的遍歷返回一個數組,包括對象自身的不含繼承的所有可枚舉屬性不含屬性的鍵名。 tip:本文含部分Es6語法 1.if(a)的自動轉換 數據類型??? 轉換為true的值??? ?? 轉換為false的值 ? Boolean ?? ? true??????????? ? false ??String? 任何...
摘要:以上是使用轉換函數方法時會返回的值在用判斷的時候,首先執行了,然后判斷為真或假。對象的遍歷返回一個數組,包括對象自身的不含繼承的所有可枚舉屬性不含屬性的鍵名。 tip:本文含部分Es6語法 1.if(a)的自動轉換 數據類型??? 轉換為true的值??? ?? 轉換為false的值 ? Boolean ?? ? true??????????? ? false ??String? 任何...
摘要:以上是使用轉換函數方法時會返回的值在用判斷的時候,首先執行了,然后判斷為真或假。對象的遍歷返回一個數組,包括對象自身的不含繼承的所有可枚舉屬性不含屬性的鍵名。 tip:本文含部分Es6語法 1.if(a)的自動轉換 數據類型??? 轉換為true的值??? ?? 轉換為false的值 ? Boolean ?? ? true??????????? ? false ??String? 任何...
摘要:寫在開頭本篇是小紅書筆記的第六篇,也許你會奇怪第六篇筆記才寫語法基礎,筆者是不是穿越了。可移步筆者的文章中替換方式參考文檔高級程序設計作者以樂之名本文原創,有不當的地方歡迎指出。 showImg(https://segmentfault.com/img/bVblGMc?w=600&h=400); 寫在開頭 本篇是小紅書筆記的第六篇,也許你會奇怪第六篇筆記才寫語法基礎,筆者是不是穿越了。...
摘要:一寫在前面最近重讀高級程序設計,總結下來,查漏補缺。但這種影響是單向的修改命名參數不會改變中對應的值。這是因為對象的長度是由傳入的參數個數決定的,不是由定義函數時的命名參數的個數決定的。實際改變會同步,改變也會同步 一、寫在前面 最近重讀《JavaScript高級程序設計》,總結下來,查漏補缺。 二、JS簡介 2.1 JS組成 ECMAscript:以ECMA-262為基礎的語言,由...
閱讀 2596·2023-04-25 15:07
閱讀 705·2021-11-24 10:21
閱讀 2299·2021-09-22 10:02
閱讀 3517·2019-08-30 15:43
閱讀 3222·2019-08-30 13:03
閱讀 2287·2019-08-29 17:18
閱讀 3586·2019-08-29 17:07
閱讀 1873·2019-08-29 12:27