当前位置: 首页 > article >正文

JavaScript高级程序设计基础(四)

上接语言基础: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;


http://www.kler.cn/a/392639.html

相关文章:

  • 【操作系统】课程 3进程同步与通信 同步测练 章节测验
  • 大语言模型(LLM)中大数据的压缩存储及其重要性
  • 通过 `@Configuration` 和 `WebMvcConfigurer` 配置 Spring MVC 中的静态资源映射
  • PANet:路径聚合网络——实例分割的创新之路
  • 使用 Three.js 创建一个 3D 人形机器人仿真系统
  • Java 8使用Stream流去除一个list中包含另一个list已存在的某个字段的对象
  • 关系型数据库和非关系型数据库详解
  • AXI DMA IP BUG踩坑记录
  • gin入门
  • 网上商城系统设计与Spring Boot框架
  • NoSQL数据库与关系型数据库的主要区别
  • SpringMVC案例学习(一)--计算器设计登录页面设计
  • 【代码随想录day29】【C++复健】134. 加油站;135. 分发糖果;860.柠檬水找零;406. 根据身高重建队列
  • [动态规划]最长公共子序列
  • vue 计算属性get set
  • 白酒除高级醇提升口感工艺
  • Javascript高级—如何实现一个类型判断函数?
  • 基于复现油炸鸡的智能手表的过程(1)
  • windows工具 -- 使用rustdesk和云服务器自建远程桌面服务, 手机, PC, Mac, Linux远程桌面 (简洁明了)
  • 前端-同源与跨域
  • 【解决】Layout 下创建槽位后,执行 Image 同步槽位位置后表现错误的问题。
  • 为什么RNN(循环神经网络)存在梯度消失和梯度爆炸?
  • 自动驾驶系列—自动驾驶车辆的姿态与定位:IMU数据在复杂环境中的关键作用
  • Python PyQt5 实现 .his 文件批量转 Excel 工具
  • 代码版本管理艺术
  • 【Python TensorFlow】进阶指南(续篇一)