上接语言基础:JavaScript高级程序设计基础(三)

2.3.8 Object类型

let obj=new Object()
  • hasOwnProperty(propertyName) :判断当前对象实例(不是原型)上是否存在给定的属
    性。要检查的属性名必须是字符串(如 o.hasOwnProperty("name") )或符号
  • isPrototypeOf( object ):用于判断当前对象是否为另一个对象的原型。
  • toString() :返回对象的字符串表示
  • valueOf() :返回对象对应的字符串、数值或布尔值表示。通常与 toString() 的返回值相同。   

2.4 操作符 

2.4.1 一元操作符

1. 譬如a++,++a等,使用方法不作过多赘述,这里讲一下遵循的规则

  • 对于字符串,如果是有效的数值形式,则转换为数值再应用改变。变量类型从字符串变成数值。
  • 对于字符串,如果不是有效的数值形式,则将变量的值设置为 NaN 。变量类型从字符串变成
  • 数值。
  • 对于布尔值,如果是 false,则转换为 0 再应用改变。变量类型从布尔值变成数值。
  • 对于布尔值,如果是 true,则转换为 1 再应用改变。变量类型从布尔值变成数值。
  • 对于浮点值,加 1 或减 1
  • 如果是对象,则调用其valueOf()方法取得可以操作的值。对得到的
  • 值应用上述规则。如果是 NaN,则调用 toString()并再次应用其他规则。变量类型从对象变成
  • 数值。
//这里用对象进行举例
let o={
    valueOf(){
        return -1;
    }
}
o++ //0

2.一元加和减

        +num可以将非数值类型转换为数值;-num把数值/非数值转换为符号相反的数(正数转换为负数,负数转换为正数)。一元加和减的非数值转换规则和上述一样

2.4.2 位操作符

~:按位非,按位去反

&:按位与,只有都是1才取1

|:按位非,有1就是1

^:按位异或,相同的就是1

<<:左移,>>:右移(左右移会保留符号位,无符号左移:<<<)

2.4.3 布尔操作符

逻辑非与或不做过多解释,这里讲一下特殊的点

!!:相当于调用Boolean()

console.log(!!"blue"); // true

当进行逻辑与、或时如果第一个判断条件已经可以得出结果,那么将不会进行第二个判断条件:即便第二个判断条件会报错,但只要第一个判断条件能得出结果,整个判断语句就不会报错。

2.4.4 乘性操作符

  • 乘除基本用法将不赘述,以下是注意点
  • 如果是 Infinity 乘以 0,则返回 NaN
  • 如果是 Infinity 除以 Infinity,则返回 NaN
  • 如果是 0 除以 0,则返回 NaN
  • 如果是非 0 的有限值除以 0,则根据第一个操作数的符号返回 Infinity -Infinity
  • 非常规的模算法都将返回NaN(除了被除数是有限值,除数是无限值,将返回被除数)
  • 如果有不是数值的操作数,则先在后台用 Number()将其转换为数值

2.4.5指数操作符

        当指数小于1时则为开根

console.log(Math.pow(3, 2); // 9 
console.log(3 ** 2); // 9

        指数操作符也有自己的指数赋值操作符**=

let squared = 3; 
squared **= 2; 
console.log(squared); // 9

2.4.6 加性操作符

        1. 加法操作符

        Infinity 加 -Infinity ,则返回 NaN
let num1 = 5; 
let num2 = 10; 
let message = "The sum of 5 and 10 is " + num1 + num2; 
console.log(message); // "The sum of 5 and 10 is 510"
let message = "The sum of 5 and 10 is " + (num1 + num2); 
console.log(message); // "The sum of 5 and 10 is 15"

        2. 减法操作符

        如果是 Infinity 减 Infinity ,则返回 NaN
        如果是-Infinity -Infinity ,则返回 NaN

2.4.7 关系操作符

        操作符包含>,<,>=,<=,用法不过多赘述。需要注意的是当不是数值的进行比较会先将其转化为数值,而字符串则会逐个比较字符串中对应字符的编码(并非根据首字母大小,而是根据字母本身的编码数值)

2.4.8 相等操作符

        1. 等于和不等于

  • 一般情况不作过多赘述。注意的是
  • null 和 undefined 相等
  • 至少有一个操作数是N即使两个操作数都是 NaN,相等操作符也返回 false
  • 如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回 true

        2. 全等和不全等(建议使用)

           全等和不全等操作符与相等和不相等操作符类似,只不过它们在比较相等时不转换操作数。

     同时null === undefined 是false,因为它们不是相同的数据类型。

        2.4.9 条件操作符

        即expression?A:B,此处不作过多解释

        2.4.10 赋值操作符

        类似于+=,>>=,<<=等,不做过多介绍

        2.4.11逗号操作符

        逗号操作符可以用来在一条语句中执行多个操作,如下所示:

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

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部