欢迎光临散文网 会员登陆 & 注册

[前端] 操作符、语句、函数

2020-03-14 16:39 作者:--刃舞--  | 我要投稿

操作符:

大部分与 C 一样,只写不一样的部分。

自增自减:与 C 不同,在 JS 内它们可以运用于所有数据类型:

1、若字符串只有数字,则进行转换并运算,字符串变量被转换为数值类型,若含其它字符,转为 NaN。

2、对于 Boolean 值,先转为 0 或 1,再进行运算。

3、对于对象,先调用 valueOf() 获得返回值再进行运算,如果返回值是 NaN,再调用 toString() 然后运算。

2. 一元 +、- 运算符,+ 的作用和 Number() 一样,- 的作用是取负值。

位操作符:基本与 C 相同,右移多了个有符号和无符号。

布尔操作符:有 !、&&、|| 三个。


!:除了 对象、非空字符串、任意非 0 数值,对剩下的所有值运算结果都是 true。

&&:运算结果不一定是布尔值。

1、若第一个操作数是对象,则返回第二个操作数。

2、若第一个操作数求值为 true 且第二个操作数是对象,返回第二个操作数。

3、若二者均为对象,返回第二个操作数。

4、若第一个操作数是 null、NaN、undefined,返回 null、NaN、undefined。


||:同样结果不一定是布尔值。

1、若第一个操作数是对象,返回第一个操作数。

2、若第一个求值为 false,返回第二个操作数。

3、二者都是对象,返回第一个操作数。

4、二者都是 null、NaN、undefined,返回 null、NaN、undefined。

关于 || 有个用法是:变量 1 = 变量2|| 变量3; 作用是当变量 2 的值不可用时,便赋值变量 3。


乘性运算符:*、/、%。


*:正常数值与 C 相同。

1、若二者都是数值,而一方为无符号,结果均为负数。

2、若一方是 NaN,结果 NaN。

3、若一方不是数值,则调用 Number() 再运算。


/:正常数值与 C 相同。

1、若二者都是数值,而一方为无符号,结果均为负数。

2、若 0 / 0,结果 NaN。

3、非零数值除以 0,结果是正无穷或负无穷。

4、若一方不是数值,则调用 Number() 再运算。


%:正常数值与 C 相同。

1、任何数取模无穷大是本身。

2、无穷大取模有限数,有限数取模 0,结果 NaN。

3、0 取模任何数为 0。

4、若一方不是数值,则调用 Number() 再运算。


加性运算符:+、-。

+:当一方不是数值时,将其转换为字符串,然后进行字符串拼接。

关系运算符:>、<、==、!=。===、!==


大于小于:

1、二者都是字符串,依次比较对应位的字符编码。

2、一方为数值,则将另一方转换为数值进行比较。


==、!=、:

1、一方是数值,则转换另一方为数值。

2、null == undefined

3、只要有 NaN,== 结果为 false,!= 结果为 true。

4、二者都是对象,则判断是否是同一对象,是则 true,否则 false。


===、!==:这两个不仅比较值,还比较类型,只要类型不同依然 false。

赋值操作符:与 C 相同。

delete 操作符:删除对象的属性,格式:delete 对象名['属性名']。

instanceof:专门用来检测对象类型,格式:实例名 instanceof 对象名,即该实例是否是该对象的实例,返回布尔值。

in:用来判断通过某对象、实例是否能访问到某属性,格式:"属性名" in 对象或实例名,是则返回 true。


语句:

if、do-while、while、for 都与 C 相同。

for-in:for(let 变量名 in 实例名){ 循环体 },迭代语句,用来枚举操作对象的属性,但当遇到属性为 null 或 undefined 时便停止执行,不报错,枚举时,每次将实例的一个属性名赋值到括号内声明的变量中,在循环体中进行操作,即括号内声明的那个变量存储的是字符串,可以通过这个字符串操作对象的每个属性。

label 语句:类似 C 的 goto 一样不建议使用,用来配合循环跳出语句一次性跳出多重循环。

with 语句:用来简化对象的赋值操作,严格模式不允许使用,例子如下:

    let a,b,c;

    with(某对象名)

    {

        a = 属性名;

        b = 属性名;

        c = 属性名;

    }

switch 语句:用法与 C 相同,但 case 被扩展到可使用所有数据类型,甚至支持变量、表达式,非常自由。

函数:

JS 的函数很宽松,形参与实参并没有个数联系,你可以一个形参都不设却传入很多实参,函数执行前,实参会被复制到一个类数组对象 arguments 中,但注意是复制不是引用,参数与 arguments 在内存的位置不是共用的,它们是分开独立存储的,只是值相同。在严格模式下,不能使用 arguments。


[前端] 操作符、语句、函数的评论 (共 条)

分享到微博请遵守国家法律