標題JavaScript運算子
算數運算子 + - * / %
1、 數值的+ , - ,* , / , %(取模)和數學運算完全相同
2、 小數點運算時會產生誤差
3、 - * / % 都是隱式轉換成數值,不論有沒有字符
+ 運算
1、 如果是字符和非字符相加,則會自動將非字符隱式轉換成字符 String() 此時+為拼接符首尾相連
2、 數值 + NaN = NaN
3、 true + false = 1
4、 如果一側是布林值,重要是另一側值,會根據另一側轉換
5、 如果兩測都沒有字符或者數值,就會都轉換為數值運算
6、 布林值一旦遇到物件都會隱式轉換為字符相加
true+ {a:1}結果為true[object Object]
7、 true+[]或true+null結果為1
- * / % 都是隱式轉換成數值,不論有沒有字符
賦值運算子 += -= *= /= %=
看到一個=號時,就是表示將等號右側的結果賦值給等號左側,并且回傳一個值
在元資料的基礎上進行累加 累減等操作,得到計算后的新值,原資料也會發生改變
a += 2; 等價于 a = a+2; 其中2為布長
連續取模無意義
一元運算子
a++ <=> a=a+1 a為數值的情況下,一元運算子使用時會全部隱式轉換為數值進行計算
++a與a++的區別:運算后a的值沒有區別
++a是先自增運算,再使用回傳a的值
a++是先使用回傳a的值,再自增運算
var a=2;
var y=a++;
console.log(y,a);——2,3
var y=++a;
console.log(y,a);——3,3
var a=“10.35”;
a=a-0;
console.log(a);——10(數值10)
快速轉換為數值型
a-=0;快速轉換為數值型
var a=10;
a=a+"";
console.log(a);——10(字符10)
快速轉換為字符型
a+="";快速轉換為字符型
關系運算子 > >= < <= == != ===
關系運算子回傳一個布林值
判斷,比較時使用
隱式轉換內容為數值,如果都是字符,則通過ASCII轉換成編碼值,再比較
沒辦法比較時,結果為 false
null和undefined特殊都沒有值 不和其他值進行比較
console.log(null == undefined);——true
console.log(0 == null);——false null是用來切斷參考關系的
console.log("" == 0);——true空字串會隱式轉換成數值 0
console.log("" == false); ——true
console.log(0 == false); ——true
console.log(![] == false); ——true![] 優先將[]看做物件,所以[]就是true ,取反后變成false
console.log([] == false); ——true陣列比較時,如果比較布林值,優先將陣列轉換為字串,再比較
console.log(![] == []);——true
console.log(" " == true); ——false空格字串,布林值轉換為字串console.log(2 == true); ——false布林值轉換為數值
console.log(undefined == false); ——false不能轉換為undefined,所以不相同
console.log(null == false); ——false不能轉換為null,所以不相同
console.log({a:1} == true); ——false不能轉換為物件,所以不相同
console.log(NaN == NaN);——false非數值永不等
console.log(isNaN(Number(“a”)));判斷是否是數值型的方法
console.log(“undefined” == undefined);——false
console.log(“null” == null); ——false
console.log("" == null); ——false
console.log("" == undefined); ——false
console.log("[object Object]"=={a:1});——true
console.log({a:1}.toString());——[object object]
console.log([“a”].toString())——a
console.log(“a” == [“a”]);——true陣列轉換為字串
console.log(“3” == true);——false字串和布林值比較,布林值轉字串
console.log(3 == true);——false數值和布林值比較,布林值轉換為數值
當字符型別和參考型別比較時,優先將參考型別執行toString()轉換為字符型別
isNaN() 用來判斷是不是非數值
回傳值 true => 非數值
false => 數值
!==(絕對不等) 和 === (絕對相等)都不會隱式轉換
===
使下列函式能運行的a
1、 if(!a){
}——"",undefined,0,null,false,NaN
2、 if(a==false){
}—— 0 "" false
3、 if(a==undefined){
}——null undefined
4、 if(a===undefined){
}——undefined
Object.is類似于===
console.log(Object.is(“3”,3));——false
console.log(Object.is(3,3));——true
console.log(Object.is(NaN,NaN));——true
console.log(Object.is([], [])😉——false
==是否相等 其實是由valueOf方式決定的,在此不做詳細解釋
if(a==1 && a==2 && a==3){
console.log("aaa");
}
邏輯運算子&& || !
&&
一假即假
遇到第一個條件為假,則停止后續的判斷,回傳其假值,否則則一直運行到最后,若最后一個條件為真,則回傳該值
true && true =true 回傳最后一個值
true && false =false 回傳false對應的值
false && true =false 回傳false對應的值
false && false =false 回傳第一次遇見false對應的值
||
一真即真
遇到第一個條件為真,則停止后續的判斷,回傳其真值,否則則一直運行到最后,若最后一個條件為假,則回傳該值
true || true =true; 第一個遇到true的對于值
true || false =true; 回傳true對應的值
false || true =true; 回傳true對應的值
false || false =false 回傳最后一個false對應的值
!
遇到! 優先將后面的內容先轉換布林值再取反
簡單案例:
1、點擊按鈕實作反選(創建兩個div,ID分別為bn0和bn1)
var bn0=document.getElementById(“bn0”);
var bn1=document.getElementById(“bn1”);
bn0.οnclick=function(){
bn1.checked=!bn0.checked;
}
2、實作點擊按鈕html背景色改變(創建一個按鈕,ID為bn0)
document.documentElement HTML標簽
var bool=false;
var bn0=document.getElementById(“bn0”);
bn0.οnclick=function(){
bool=!bool;
if(bool){
document.documentElement.style.backgroundColor="#000000";
else{
document.documentElement.style.backgroundColor="#FFFFFF";
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/145458.html
標籤:其他
下一篇:一般公司網站的制作流程
