||與&&
a && b : 將a, b轉換為Boolean類型, 再執行邏輯與, true返回b, false返回a
a || b : 將a, b轉換為Boolean類型, 再執行邏輯或, true返回a, false返回b
轉換規則:
對象為true
非零數字為true
非空字符串為true
其他為false
* 幾乎所有語言中||和&&都遵循“短路”原理,
* 如&&中第一個表達式為假就不會去處理第二個表達式,而||正好相反。
* js也遵循上述原則。
* 當||時,找到為true的分項就停止處理,并返回該分項的值,否則執行完,并返回最后分項的值。
* 當&&時,找到為false的分項就停止處理,并返回該分項的值。
// var a = "" || null || 3 || 4;//3
// alert(a);
// var b = 4 && 5 && null && "0";//null
// alert(b);
?
RegExp
[\b]? ? ? 退格符(backspace)
\0? ? ? ? Null字符
\cX? ? ? X是A-Z的一個字母。匹配一個控制字符,\cM匹配字符串中的 control-M
[^xyz]? 取反,匹配除xyz以外的所有字符
?
^a? ? ? ? ? ? ? ? ? ?匹配以a開頭的字符
s$? ? ? ? ? ? ? ? ? ?匹配以s結尾的字符
\b? ? ? ? ? ? ? ? ? ?匹配一個邊界單詞,如\bno 匹配"at noon"中的"no",ly\b匹配”possibly yesterday"中的"ly"
\B? ? ? ? ? ? ? ? ? ?匹配一個非邊界單詞,\Bon匹配“at noon"中的on,? ye\B匹配”possibly ysterday"中的“ye"
\n? ? ? ? ? ? ? ? ? ?表示分組中左邊第n個括號中的表達式,apple(,)\sorange\1?匹配 "apple, orange, cherry, peach." 中的 "apple,orange,"。
(?:x)? ? ? ? ? ? ? ?匹配x,但不會捕獲x,就是這個x不會出現在分組中
x*?或x+?? ? ? ? ?表示非貪婪匹配
x?? ? ? ? ? ? ? ? ? ??表示匹配一次或0次
x(?=y)? ? ? ? ? ? ?匹配x, 只有當x后面緊跟著y時才匹配x
x(?!y)? ? ? ? ? ? ? 匹配x,只有當x后面不是y時才匹配x?
js中的正則表達式用/.../[.../]表示一個參數,第二個參數可以為
g? ? ? ? ? ? ? ? ? ? ?全局匹配;
i? ? ? ? ? ? ? ? ? ? ? 忽略大小寫;
m? ? ? ? ? ? ? ? ? ? 讓^和$可以分別匹配\r,\n;
u? ? ? ? ? ? ? ? ? ? ?將第一個參數里的表達式視為unicode
var myRe=/ab*/g;? ? ? ? ? ? ?表示匹配模式為ab*, g為第二個參數,表示全局匹配
var str='abbcdefabh';
使用正則表達式的三種形式
var resul=myRe.exec(str)? #resul為匹配的結果 ,resul[0]為全部匹配的結果,resul[1]為第一個分組的結果。。
myRe.test(str)? ? ? ? ? ? ? ? ? ? ? # 返回bool值,檢查str是否含符合正則表達式的字符
str.match(myRe)? ? ? ? ? ? ? ? ? ?#返回結果同exec()
?
字符串方法
str='this is my sting word';
str.replace(‘需要被替換的字串’ 或 ‘字串的正則表達式小括號內的串’ , ‘給定來替換原串的串’)
str.indexOf("?")? 返回給定字符第一次出現的位置,未出現則返回-1
str.split('&') 根據給定分割符分割字符串,返回分割后的數組
?
數組方法
創建 :var my_arry=new Arry()? ?或 var my_arry=[]
遍歷: for(var i=0;i<my_arry.length;++i) my_arry[i];
拼接:a=my_arry.join(',');
排序:b=my_arry.sort();
反轉:c=my_arry.reverse();
根據索引刪除插入元素:d=my_arry.splice(start,deleteCount,val1,val2,..)從start位置起刪除deleteCount個元素,并從該位置起插入val1,val2,.. ,返回值為被刪除的元素組成的新數組。
數組間連接: d=my_arry.concat(3,4,5) ,返回值為my_arry的值加上【3,4,5】組成的新數組
向數組尾部添加元素:my_arry.push(4) ,返回值為數組的長度
刪除數組尾部元素: my_arry.pop() ,返回值為尾部被刪除的元素
刪除數組頭部元素:my_arry.shift() ,返回被刪除的元素
添加元素到數組頭部:my_arry.ushift(4,5)
?
?
運算符優先級
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
?
?
優先級 | 運算類型 | 關聯性 | 運算符 |
---|---|---|---|
20 | 圓括號 | n/a | ( … ) |
19 | 成員訪問 | 從左到右 | … . … |
需計算的成員訪問 | 從左到右 | … [ … ] | |
new ?(帶參數列表) | n/a | new … ( … ) | |
函數調用 | 從左到右 | … (?…?) | |
18 | new?(無參數列表) | 從右到左 | new … |
17 | 后置遞增(運算符在后) | n/a ? | … ++ |
后置遞減(運算符在后) | … -- | ||
16 | 邏輯非 | 從右到左 | ! … |
按位非 | ~ … | ||
一元加法 | + … | ||
一元減法 | - … | ||
前置遞增 | ++ … | ||
前置遞減 | -- … | ||
typeof | typeof … | ||
void | void … | ||
delete | delete … | ||
await | await … | ||
15 | 冪 | 從右到左 | …?**?… |
14 | 乘法 | 從左到右 ? | … *?… |
除法 | … /?… | ||
取模 | … %?… | ||
13 | 加法 | 從左到右 ? | … +?… |
減法 | … -?… | ||
12 | 按位左移 | 從左到右 | … <<?… |
按位右移 | … >>?… | ||
無符號右移 | … >>>?… | ||
11 | 小于 | 從左到右 | … <?… |
小于等于 | … <=?… | ||
大于 | … >?… | ||
大于等于 | … >=?… | ||
in | … in?… | ||
instanceof | … instanceof?… | ||
10 | 等號 | 從左到右 ? | … ==?… |
非等號 | … !=?… | ||
全等號 | … ===?… | ||
非全等號 | … !==?… | ||
9 | 按位與 | 從左到右 | … &?… |
8 | 按位異或 | 從左到右 | … ^?… |
7 | 按位或 | 從左到右 | … |?… |
6 | 邏輯與 | 從左到右 | … &&?… |
5 | 邏輯或 | 從左到右 | … ||?… |
4 | 條件運算符 | 從右到左 | … ? … : … |
3 | 賦值 | 從右到左 | … =?… |
… +=?… | |||
… -=?… | |||
… *=?… | |||
… /=?… | |||
… %=?… | |||
… <<=?… | |||
… >>=?… | |||
… >>>=?… | |||
… &=?… | |||
… ^=?… | |||
… |=?… | |||
2 | yield | 從右到左 | yield?… |
yield* | yield*?… | ||
1 | 展開運算符 | n/a | ... ?… |
0 | 逗號 | 從左到右 | … ,?… |