||与&&
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 | 逗号 | 从左到右 | … , … |