資料型別轉換
轉換為String
強制型別轉換
1. toString()方法:
var a=10;
a=a.toString();
如果呼叫undefined和null的toString()會報錯
2.String()函式
var a=10;
a=String(a)
對於具有toString()方法型別,String()也會呼叫它的toSting()來進行轉換
對於null 直接將其 轉換為 "null"
對於undefined 直接將其 轉換為 "undefined"
隱式型別轉換
通過為任意型別加上一個空串的形式將其轉換為字串
var a=10;
a=a+"";
轉換為Number
強制型別轉換
1.Number()函式
var num="10";
num=Number(num);
轉換的情況:
字串: 如果是一個合法的數字 則直接轉換成對應的數字
如果不是一個合法的數字 則轉換成NaN
如果是空字串和純空格的字串 則轉換為0
布林值: true轉換成1 false變成0
null:null直接轉換為0
undefined:undefined轉換為NaN
2.parseInt()函式
將一個字串中的有效整數位提取出來
3. parseFloat()函式
將一個字串中的有效小數提取出來
隱式型別轉換
使用一元運算子的"+"將任意的資料型別轉換為Number
var a="10";
a=+a;
轉換為Boolean
強制型別轉換
呼叫Boolean()函式
var a=1;
a=Boolean(a);
轉換的情況:
String 除了空字串 其餘都是true
Number 除了0和NaN 其餘都是true
null和undefined都為false
隱式型別轉換
可以通過對任意型別的資料取反兩次 將其轉換為布林值
var a=10;
a=!!a;
運算子(操作符)
通過運算子可以一個或多值進行運算
算數運算子
+
-
*
/
%
規則和數學中的規則一致
一元運算子
+(正號) -(負號) ++ -- ! typeof instanceof delete
二元運算子
+(加號) -(減號) / % > < >= <= == != === !== && || += -= /= %=
三元運算子
?:
加法運算子
如果兩個運算元都是數字的話 進行加法計算
console.log(1+1) //2
如果運算元中出現字串 進行字串拼接
console.log(1+'個蘋果') //1個蘋果
除了加法運算子 其他算數運算子都將字串型別自動轉換成number型別 再進行計算
console.log('2'-'2') //0
求餘運算子
計算兩個數整除後的餘數 求餘的結果是正數還是負數,與第一個運算元的正負有關
console.log(5%3) //2
console.log(-5%3) //-2
console.log(5%-3) //2
console.log(-5%-3) //-2
++
自增
自增可以使變數在原來的基礎自增1
自增分成前++(++a) 和 後++(a++)
無論是++a 還是 a++都會使原變數立即自增1
不同的是++a 和 a++的值不同
++a是變數自增後的值,新值
a++是變數自增前的值,原值
--
自減
自減可以使變數在原來的基礎自減1
自減分成前--(--a) 和 後--(a--)
無論是--a 還是 a--都會使原變數立即自減1
不同的是--a 和 a--的值不同
--a是變數自減後的值,新值
a--是變數自減前的值,原值
相等與不等
==與!= 只比較運算元的值 不比較型別
consolel.log(10 =='10') //true
console.log(undefined == null) //true 都表示空 所以輸出為true
全等與全不等
===和!== 既比值 又比較型別
console.log(10 ==='10') //false
console.log(10 !=='10') //true
isNaN()函式
用於判斷引數是否是非數字值 多用於檢測轉換後的結果是否為合法的數字值
注:NaN與任何值進行比較 都是false 不能使用 == 或者 === 運算子判斷 只能用isNaN()函式
console.log(isNaN(parseInt('123abc'))) //true
console.log(isNaN('123.456abc')) //true
邏輯運算子
! 邏輯非
可以對一個布林值進行取反操作
如果對一個非布林值進行邏輯非運算,會先將其轉換為布林值,然後再取反
利用這個特點,可以為指定的值取兩次反,來將其轉換為布林值。
&& 邏輯與
可以對符號兩側的值做與運算
如果對非布林值做與運算,會將其轉換為布林值然後再運算,
最終會返回原值
如果第一個值是false,則直接返回第一個值
如果第一個值是true,則返回第二個值
js中的與運算是短路的與,如果第一個值是false,則不看第二個值
|| 邏輯或
可以對符號兩側的值做或運算
如果對非布林值做或運算,會將其轉換為布林值然後再運算,
最終會返回原值
如果第一個值是true,則直接返回第一個值
如果第一個值是false,則返回第二個值
js中的或運算是短路的或,如果第一個值是true,則不看第二個值
賦值運算子
=
= 將符號右側的值賦值給符號左側的變數
+=
a += 5 相當於 a = a+5
-= 同+
*= 同+
/= 同+
%= 同+
條件運算子(三元運算子)
?:
語法:
條件表示式?語句1:語句2
-執行流程:
三目運算子在執行時,會先對條件表示式進行求值判斷,
如果判斷結果為true,則執行語句1,並將執行結果返回
如果判斷結果為false,則執行語句2,並將執行結果返回
var salary =45000;
var result=salary >30000 ? console.log('中產階級') : console.log(' 小康');
條件運算子巢狀
條件運算子中 每個表示式可以為另一個條件表示式 為條件運算子巢狀
var age=24;
var result=age >=60 ? console.log('老年') :(age >=30 ? console.log('中年'):(age >18 ?console.log('成年'):console.log('未成年')) )
程式碼執行順序:
age>=60 不符合條件繼續執行 age >=30 不符合條件繼續執行 age >18 滿足條件