0 或 +0、 -0,nan、 "" 、 false、undefined、null這幾個是false ,其他的全都是true。
if(a && b)的正確理解方式是: a && b 進行表示式求值後,然後在轉換為boolean型別。&& 是短路語法,求值後不一定是乙個boolean型別。
||短路表示式
1、只要「||」前面為false,不管「||」後面是true還是false,都返回「||」後面的值。
2、只要「||」前面為true,不管「||」後面是true還是false,都返回「||」前面的值。
這種為短路原理: 知道了前面第乙個的結果就知道後的輸出,如果為第乙個為:true,則取第乙個的值,如果第乙個為false,則取第二個的值。
&&1、只要「&&」前面是false,無論「&&」後面是true還是false,結果都將返「&&」前面的值;
2、只要「&&」前面是true,無論「&&」後面是true還是false,結果都將返「&&」後面的值;乙個字串+ 乙個數字,或者字串,或者其他的東西,轉換為字串,例如: "" + infinity、 "" + 1
轉換為數字的時候,+號是個隱式轉換,會執行number(),這裡包含能轉換成功的和不能。 +null 、+false、 + "" // 0、 +undefined // nan 、 + '1x' // nan轉化為數字 1.優先呼叫valueof方法,看其返回是否是基本型別,如果是,轉化為數字,返回。
2. 否則,呼叫tostring 方法,看其返回結果是否是基本型別,如果是,轉化為數字,返回。
轉化為字串: 1.優先呼叫tostring ,看其返回結果是否是原始型別,如果是,轉化為字串,返回。
2.否則,呼叫valueof 方法,看其返回結果是否是原始型別,如果是,轉化為字串,返回。
3.其他報錯1,null和undefined,相等。
2,數字和字串,轉化為數字再比較。
3,如果有true或false,轉換為1或0,再比較。
4,如果有引用型別,優先呼叫valueof。
5,其餘都不相等。
首先呼叫物件自身的valueof()方法,如果返回基本型別的值,則用number建構函式進行轉換。如果valueof()返回的不是基本型別的值,則再呼叫tostring()方法,如果返回基本型別的值,值用number建構函式進行轉換。如果tostring()返回的不是基本型別的值,則丟擲異常。5.1 在所有加減乘除需要數字型別的地方,js會自動使用number() 進行轉換。'1'-'2' // -1; 1+ '2' //加號,其他型別和字串相加,都會轉換成字串。 '1' - true //0 ; '1' * {}// nan ;'1'-'a' //nan;
5.2 轉換為字串 字串自動轉換主要表現為字串的拼接,字串和其他型別用加號(+)拼接時,其他型別都自動轉換為字串。 'a' +{} // a[object object]
5.3 轉換為布林值 當任意需要布林型別的地方,系統都會自動呼叫boolean () 建構函式將值轉換為boolean 型別。
vue隨筆之二型別判斷一
判斷是否為undefined或者null function isdef v 判斷是否不為undefined或者null function isdef v 判斷是否為true function istrue v 判斷是否為false function isfalse v 判斷是否為原始型別 字串 數字...
前端面試題3 型別轉換布林值
var x newboolean false if x var y boolean 0 if y 的顯示結果是?答案 hi 解析 new boolean false 會生成乙個新的物件 boolean false 而在if判斷中,會進行布林值和轉換,只有 0,0,nan,null,undefined...
struts2學習筆記(二) 型別轉換
基本型別 boolean和boolean,char和chracter,int和integer,long和long,float和float,double和double,date 使用者輸入為yyyy mm dd 集合型別 對於list和陣列,元素為string,如果是復合型別需要提供自定義轉換器。其他...