(3)JS语法注意事项(操作符、语句、函数)

1.    操作符

(1)一元操作符 ++  --  +   - :可应用于任何类型变量,对于非数值,会相应调用Number()进行转换

(2)位操作符:对于非数值类型的变量进行位操作时,先调用Number()转换为数值,然后对得到的数值进行位操作。按位非~,按位与&,按位或|,按位异或^,左移<<,有符号右移>>(以符号位填充空位,保持了数值正负性),无符号右移>>>(以0填充空位)。

(3)布尔操作:逻辑非!,两个!!连用等价于Boolean()函数,逻辑非可应用于任何值,该值会先调用Boolean函数转换为boolean类型,再进行!操作。逻辑与&&,当操作数中不全是Boolean类型时,若两个操作数中,有一个为NaN则返回NaN,有一个为null则返回null,有一个为undefined则返回undefined,若两个都是对象则返回第二个,若第一个为对象则返回第二个操作数,若第二个是对象且第一个求值结果为true则返回第二个操作数。逻辑或||,当操作数中不全是Boolean类型时,若两个操作数中,若第一个为对象则返回第一个操作数,若第一个操作数求值结果为false则返回第二个操作数,若两个都是对象则返回第一个操作数,若两个多少null返回null,若两个都是NaN则返回NaN,若两个都是undefined则返回undefined。

注:逻辑与和或都是短路操作。

(4)乘、除、取模、加、减:

乘法*,若操作数不是数值,内部先调用Number()函数,再进行乘法操作,结果超出数值范围则返回Infinity或-Infinity,有一个操作数为NaN则返回NaN,Infinity*0=NaN,Infinity*非0数返回Infinity或-Infinity。

除法/,若操作数不是数值,内部先调用Number()函数,再进行除法操作,结果超出数值范围则返回Infinity或-Infinity,有一个操作数为NaN则返回NaN,Infinity/Infinity = NaN,0/0 = NaN,非0有限数除0返回Infinity或-Infinity,Infinity除以任何非0值返回Infinity或-Infinity。

取模%,若操作数不是数值,内部先调用Number()函数,再进行取模操作,无穷大除以有限大返回NaN,有限大除以0返回NaN,Infinity%Infinity=NaN,被除数为0,结果为0,有限大除以无限大返回有限大。

加法+,如果两个数都是数字,则正常加法操作,有NaN则为NaN,Infinity+Infinity=Infinity,-Infinity+ -Infinity = -Infinity,Infinity+-Infinity=NaN,+0 + +0 = +0,-0 + -0 = -0,+0 + -0 = +0。.如果操作数中有字符串,则将另一个操作数转为字符串,并拼接起来。

减法-,若操作数不是数值,内部先调用Number()函数,再进行减法操作,有NaN则为NaN,Infinity-Infinity=NaN,-Infinity- -Infinity = NaNInfinity- -Infinity = Infinity,-Infinity- Infinity = -Infinity,+0 - +0 = +0,-0 - -0 = +0,+0 - -0 = -0。

(5)关系操作符:<,>,<=,>=。若两个操作数均为数字,则比较数字;若两个操作数均为字符串,则依次比较两个字符串对应位置字符的编码值(不是字典序!),若一个操作数是数值则将另一个转换为数值进行数值比较,布尔型转换为数值进行比较,若一个为对象则调用toValue如果没有该函数则调用toString在进行比较。

(6)相等操作符:==和!=先转换再比较;===和!==不转换直接比较。

(7)赋值操作符:=,+=,-=,*=,/=,%=,<<=,>>=>,>>=

(8)条件操作符:result = a==b?a:b;

2.    语句

(1)if-else语句,do-while语句,while语句,for语句,switch语句(case中可以使用任何数据类型甚至可以进行值判断num>0)

(2)for-in语句,用来枚举对象的属性  for(var aa in arr){alert(aa);}

(3)label语句与break、continue联合使用可调出多层循环(不建议使用啦~)

3.    函数参数

(1)JS参数在内部由一个数组实现,可以通过arguments对象对参数进行访问,arguments.length可以获得传入参数的个数,因为这种实现方式,调用函数时传入的参数个数可以与函数声明的参数个数不同。

(2)JS并不关心函数声明中的参数个数与类型,因此JS没有函数重载。函数重载是通过函数签名(参数数量与类型不同)来实现的

(3)对于未指定返回值的函数,其返回为undefined

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值