js红宝书第三章操作符

操作符

1、一元操作符:递增/递减(++ or --),注意区分前缀和后缀的区别,可做用于任何,不限整数

  • 对于字符串,如果是有效的数值形式,则转换为数值再应用改变。变量类型从字符串变成数值。
  • 对于字符串,如果不是有效的数值形式,则将变量的值设置为NaN。变量类型从字符串变成数值。
  • 对于布尔值,如果是false,则转换为0再应用改变。变量类型从布尔值变成数值。
  • 对于布尔值,如果是true,则转换为1再应用改变。变量类型从布尔值变成数值。
  • 对于浮点值,加1或减1。
  • 如果是对象,则调用其(第5章会详细介绍的)valueOf()方法取得可以操作的值。对得到的值应用上述规则。如果是NaN,则调用toString()并再次应用其他规则。变量类型从对象变成数值

2、一元加减:+一元加没有任何影响,-一元减主要用于放在数值前,使得数值变成负数

3、位操作符:按位非(~),按位与(&),按位或(|),按位异或(^),左移(<<),有符号右移(>>),无符号右移(>>)

4、逻辑非:!,两个!!可以将任意值转换为布尔值

5、逻辑与:&&,可用于任何类型的操作数,不限布尔值

  • 如果第一个操作数是对象,则返回第二个操作数。
  • 如果第二个操作数是对象,则只有第一个操作数求值为true才会返回该对象。
  • 如果两个操作数都是对象,则返回第二个操作数。
  • 如果有一个操作数是null,则返回null
  • 如果有一个操作数是NaN,则返回NaN
  • 如果有一个操作数是undefined,则返回undefined

逻辑与是短路操作符,第一个值就决定了计算的结果,那不会进行第二个值的计算。例如false&&true=false

let variel=true;
let o = variel && s1;//报错,s1未定义
console.log(o);


variel=false;
let o2=variel&& s1;//不报错,短路操作符
console.log(o2);

6、逻辑或:||,可做用于任何值类型,不限于布尔值,但非布尔类型的值不一定会返回布尔值

  • 如果第一个操作数是对象,则返回第一个操作数。
  • 如果第一个操作数求值为false,则返回第二个操作数。
  • 如果两个操作数都是对象,则返回第一个操作数。
  • 如果两个操作数都是null,则返回null
  • 如果两个操作数都是NaN,则返回NaN
  • 如果两个操作数都是undefined,则返回undefined

同逻辑与操作符类似,逻辑或操作符也具有短路特性。只不过逻辑或的第一个值如果为true那么,无论如何,第二个值都不会被计算,直接返回true 

7、乘性操作符:*

  • 如果操作数都是数值,则执行常规的乘法运算,即两个正值相乘是正值,两个负值相乘也是正值,正负符号不同的值相乘得到负值。如果ECMAScript不能表示乘积,则返回Infinity-Infinity
  • 如果有任一操作数是NaN,则返回NaN
  • 如果是Infinity乘以0,则返回NaN
  • 如果是Infinity乘以非0的有限数值,则根据第二个操作数的符号返回Infinity-Infinity
  • 如果是Infinity乘以Infinity,则返回Infinity
  • 如果有不是数值的操作数,则先在后台用Number()将其转换为数值,然后再应用上述规则

 8、除法操作符:/

  • 如果操作数都是数值,则执行常规的除法运算,即两个正值相除是正值,两个负值相除也是正值,符号不同的值相除得到负值。如果ECMAScript不能表示商,则返回Infinity-Infinity
  • 如果有任一操作数是NaN,则返回NaN
  • 如果是Infinity除以Infinity,则返回NaN
  • 如果是0除以0,则返回NaN
  • 如果是非0的有限值除以0,则根据第一个操作数的符号返回Infinity-Infinity
  • 如果是Infinity除以任何数值,则根据第二个操作数的符号返回Infinity-Infinity
  • 如果有不是数值的操作数,则先在后台用Number()函数将其转换为数值,然后再应用上述规则。

9、取模操作符:%

  • 如果操作数是数值,则执行常规除法运算,返回余数。
  • 如果被除数是无限值,除数是有限值,则返回NaN
  • 如果被除数是有限值,除数是0,则返回NaN
  • 如果是Infinity除以Infinity,则返回NaN
  • 如果被除数是有限值,除数是无限值,则返回被除数。
  • 如果被除数是0,除数不是0,则返回0。
  • 如果有不是数值的操作数,则先在后台用Number()函数将其转换为数值,然后再应用上述规则

10、指数操作符Math.Pow(数值,指数)

11、加性操作符:+,数值相加,或者是将两个字符串拼接在一起

12、减性操作符:-,数值相减、

13、关系操作符:>,<,<=,>=,其中字母是按照ASCII码来进行比较的

14、相等操作符:

等于和不等于:==和!=  

 

表达式结果
null == undefinedtrue
"NaN" == NaNfalse
5 == NaNfalse
NaN == NaNfalse
NaN != NaNtrue
false == 0true
true == 1true
true == 2false
undefined == 0false
null == 0false
"5" == 5true

全等和不全等:===和!==

let result1 = ("55" != 55);  // false,转换后相等
let result2 = ("55" !== 55); // true,不相等,因为数据类型不同

 15、条件操作符:?:

16、赋值操作符:=

  • 乘后赋值(*=
  • 除后赋值(/=
  • 取模后赋值(%=
  • 加后赋值(+=
  • 减后赋值(-=
  • 左移后赋值(<<=
  • 右移后赋值(>>=
  • 无符号右移后赋值(>>>=

这些操作符仅仅是简写语法,使用它们不会提升性能。

17、逗号操作符:,

let num1 = 1, num2 = 2, num3 = 3;

 二、语句

1、if语句

2、do-while语句

3、for语句

4、while语句

5、for-in语句:是一种严格的迭代语句,用于枚举对象中的费符号键属性

for (const propName in window) {
  document.write(propName);
}

6、for-of语句:是一种严格的迭代语句,用于遍历可迭代对象的元素

7、标签语句:后面可以通过break或者是continue语句引用

//语法
label: statement

start: for (let i = 0; i < count; i++) {
  console.log(i);
}

8、break和continue语句

9、with语句:严格模式不允许使用with语句

//语法
with (expression) statement;

let qs = location.search.substring(1);
let hostName = location.hostname;
let url = location.href;

with(location) {
  let qs = search.substring(1);
  let hostName = hostname;
  let url = href;
}

10、switch语句

三、函数:不要求指定函数的返回值,不指定返回值的函数会返回undefined

function functionName(arg0, arg1,...,argN) {
  statements
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值