JavaScript高级程序设计读书笔记(第三章)(二)

C语言第十五课:操作符详解(中)——单目、关系、逻辑、条件操作符 在上一篇文章中我们学习了算数、移位、位与赋值操作符的相关知识。本文我将继续按照顺序,带领小伙伴们继续学习单目、关系、逻辑、条件这些我们在编写代码时常用的操作符。 阅读详情

第三章:JavaScript基本概念

操作符

一元操作符:

递增和递减操作符(++ –)
注意:执行前置递增和递减操作时,变量的值都是在语句被求值以前改变的。
例如:

var age = 29;
var anotherAge = --age + 2;
alert(age); // 输出28
alert(anotherAge); // 输出30

注意:把递增操作符放在变量后面并不会改变语句的结果,因为递增是这条语句的唯一操作。但是,当语
句中还包含其他操作时,上述区别就会非常明显了。

var num1 = 2;
var num2 = 20;
var num3 = num1-- + num2; // 等于22
var num4 = num1 + num2; // 等于21

++ 和 –操作遵循以下规则:
字符串和布尔值:先转换为数字再进行操作,
对象:先调用对象的valueOf()方法,然后对该值进行运算。如果结果是NaN,则在调用toString()方法后再应用运算。对象变量变成数值变量。

var o = {
    valueOf: function() {
    return -1;
    }
};
o = +o; // 值变成数值-1
位操作符:

按位非、于、或、异或:
先将数值转化为二进制数,再进行位操作:
例如:25 | 3:

25 = 0000 0000 0000 0000 0000 0000 0001 1001
3 = 0000 0000 0000 0000 0000 0000 0000 0011
--------------------------------------------
OR = 0000 0000 0000 0000 0000 0000 0001 1011

结果为27。

左移操作符由两个小于号(<<)表示,这个操作符会将数值的所有位向左移动指定的位数

布尔操作符:

1、逻辑非:(!)

if(!false){
    //do something
}

2、逻辑与:
遵循规则:

  • 如果第一个操作数是对象,则返回第二个操作数:
var o = new Object()
    alert(o && true); ==>true
  • 如果第二个操作数是对象,则只有在第一个操作数的求值结果为true 的情况下才会返回该对象,因为false&&任何值都是false;
var o = new Object()
    alert(Boolean(true && o)); ==>true
  • 如果两个操作数都是对象,则返回第二个操作数;
  • 如果有一个操作数是null,NaN或者undefined,则返回null,NaN或者undefined。

3、逻辑或:
规则:

  • 如果第一个操作数是对象,则返回第一个操作数。
  • 如果第一个操作数的求值结果为false,则返回第二个操作数。
  • 如果两个操作数都是对象,则返回第一个操作数。
  • 如果有一个操作数是null,NaN或者undefined,则返回null,NaN或者undefined。
运算符:

乘法:(*),除法:(/),求余:(%)
如果参与计算的某个操作数不是数值,后台会先使用Number()转型函数将其转换为数值。
加法:(+)

  • 如果有一个操作数是字符串,则将另一个操作数转换为字符串,然后将两个字符串拼接起来。
  • 如果两个都是数字,则执行数学相加。
  • 如果有一个操作数是对象、数值或布尔值,则调用它们的toString()方法取得相应的字符串值,然后再应用前面关于字符串的规则。对于undefined和null,则分别调用String()函数并取得字符串”undefined”和”null”。

减法:(-)

  • 如果有一个操作数是字符串、布尔值、null 或undefined,则先在后台调用Number()函数将其转换为数值,然后再根据前面的规则执行减法计算。如果转换的结果是NaN,则减法的结果就是NaN;
  • 如果有一个操作数是对象,则调用对象的valueOf()方法以取得表示该对象的数值。如果得到的值是NaN,则减法的结果就是NaN。如果对象没有valueOf()方法,则调用其toString()方法并将得到的字符串转换为数值。
关系运算符

“>,<,>=,<=”等运算符都返回一个布尔值,遵循以下规则:

  • 如果两个操作数都是数值,则执行数值比较。
  • 如果两个操作数都是字符串,则比较两个字符串对应的字符编码值。
'23'<'3' ==> true
//"2"的字符编码是50,而"3"的字符编码是51
  • 如果一个操作数是数值,则将另一个操作数转换为一个数值,然后执行数值比较。
  • 如果一个操作数是对象,则调用这个对象的valueOf()方法,用得到的结果按照前面的规则执行比较。如果对象没有valueOf()方法,则调用toString()方法,并用得到的结果根据前面的规则执行比较。
  • 如果一个操作符是布尔值,则转化为数值比较
相等操作符

ECMAScript 的解决方案就是提供两组操作符:相等和不相等——先转换再比较,全等和不全等——仅比较而不转换。
转换规则:

  • 如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值;
  • 如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false 转换为0,而 true 转换为1;
  • 如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则进行比较;
  • null和undefined在使用相等操作符比较时会返回true
  • NaN与任何值做相等判断都会返回false,即便NaN自身也是。
  • 如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回true;否则,返回false。

全等和不全等操作符(===和!==)不会对比较的操作数进行类型转换,因此他们比较的是在两个操作数未经转换时是否相等。

条件操作符:

variable = boolean_expression ? true_value : false_value;

例如:
3 > 5 ? true:false ==>false

《JavaScript高级程序设计》读书笔记 23 《JavaScript高级程序设计》读书笔记 23 - 集合引用类型之Object、Array 阅读详情

相关推荐

《JavaScript高级程序设计》读书笔记 【1~7章】

文章目录1.Javascript简介1.1. ECMAScript1.1.1. ECMAScript简介1.1.2. ECMAScript兼容1.2. 文档对象类型DOM1.2.1. DOM简介1.2.2. DOM级别1.2.3. 其他DOM标准1.3. 浏览器对象类型BOM2. HTML中使用JavaScript2.1. < script >元素3. 基本概念3.1. 语法3.2. 数据类型3.3. 流控制语句3.4. 理解函数 1.Javascript简介 JavaScript是一种专为与网

lemossrkilakila 800

C语言:关系操作符、逻辑操作符

本篇介绍C语言中关系操作符和逻辑操作符的使用规则,以及一些注意点。

weixin_44443904的博客 2350

《JavaScript高级程序设计》读书笔记 28

《JavaScript高级程序设计》读书笔记 28 - 迭代器

qq_34911907的博客 755

深入讲解各种操作符——关系、条件、逻辑

C语言当中用于比较的表达式,比较就代表了两个事物之间的关系,所以这种用于比较的表达式,“关系表达式”常见的关系运算符有以下六个>(大于)=(大于等于)

derive_magic的博客 1338

《JavaScript高级程序设计》读书笔记 18

《JavaScript高级程序设计》读书笔记 18 - 引用类型之Date类型

qq_34911907的博客 1167

《JavaScript高级程序设计》读书笔记 19

《JavaScript高级程序设计》读书笔记 19 - RegExp

qq_34911907的博客 763

C语言:操作符

条件操作符就是三目操作符,它是一个唯一一个需要三个操作数的运算符,它提供了一简洁的方法来根据条件返回不同的值。

hklhklhkhl123的博客 1675

《JavaScript高级程序设计》读书笔记 34 - 代理基础

《JavaScript高级程序设计》读书笔记 34 - 代理基础

qq_34911907的博客 1181

关系操作符,条件操作符与逻辑操作符

这就不像我们数学中的那样了,比如:a < b < c ,这样子虽然系统并不会报错,但是在代码运行的时候,往往并不会向我们预想的结果去发展,这是因为在C语言中,关系运算符是从左到右依次运算,所以对于这个式子,系统就会识别为:(a < b )<c ,上面提到过,关系表达式返回值是 0 或 1 ,所以这里按我们输入的就是 a 与 b 比较后真假的返回值 0 或1 与 c 作比较。,言简意赅嘛,就是并且的意思,两侧的表达式都为真,则为真,否则为假(2.之前就多次提到过,在C语言中,0表示假,非0表示真,

Dove_Xxx的博客 1331

《JavaScript高级程序设计》读书笔记 21

《JavaScript高级程序设计》读书笔记 21 - String包装类型的方法

qq_34911907的博客 750

《JavaScript高级程序设计》读书笔记 33 - 类

《JavaScript高级程序设计》读书笔记 33 - 类

qq_34911907的博客 945

JavaScript 高级程序设计 读书笔记(第三章)

在 JavaScript 的世界里,第三章的内容可以说是奠基石,它决定了你对这门语言的基本理解。JavaScript 是弱类型语言,类型转换是家常便饭。以上就是第三章的读书笔记,下一篇我们深入解析第四章,聊聊变量、作用域和垃圾回收!严格模式可以让 JavaScript 变得更加严格,避免一些潜在的错误。在严格模式下,未声明的变量不能被赋值,防止意外创建全局变量。而一脸问号,那么恭喜你,这一章就是为你准备的。声明的变量不会被提升,访问前必须声明。声明的变量会被提升,但不会赋值。只是值的拷贝,所以修改。

dorabighead的博客 1162

《JavaScript高级程序设计》读书笔记 26

《JavaScript高级程序设计》读书笔记 26 - WeakMap

qq_34911907的博客 615

【JS】JavaScript高级程序设计-第三章基本概念

本文章为JavaScript高级程序设计第三版的重点学习笔记,从第三章开始学习提示:以下是本篇文章正文内容,下面案例可供参考基本数据类型: Undefined Null Boolean Number String;使用typeof 来判断基础数据类型typeof null 返回的是objectnull == undefined 但 null!NaN和任何值都不相等包括NaNJS 精度问题使用arguments对象来访问函数参数。

sobergyn的博客 999

多任务学习中的过拟合陷阱:动态停止训练机制详解与避坑指南

本文深入剖析了多任务学习中因任务过拟合不同步导致的性能下降问题,并详细介绍了动态停止-继续训练机制。该机制通过为每个任务设置独立的训练开关,基于验证集性能动态控制其梯度更新,有效缓解了任务间负迁移,是提升多任务模型整体泛化能力的关键策略。

happy2的博客 1093

芯片低功耗设计实战:CPF与UPF流程选择指南(附工具对比)

本文深入探讨了芯片低功耗设计实战中CPF与UPF流程的选择策略。文章从两者本质差异与演进脉络出发,结合Cadence与Synopsys工具链的深度支持实况,为工程师提供了基于项目场景的决策框架。重点分析了在混合工具链环境下如何实施流程与验证,并强调了利用Spyglass等工具确保功耗意图无损传递的关键技巧,旨在帮助团队做出明智的流程抉择,提升设计效率与可靠性。

weixin_29197051的博客 408

javascript高级程序设计 javascript权威指南

这篇文章主要介绍了javascript高级程序设计 javascript权威指南,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。

chatgpt001的博客 1239

利用HFSS仿真优化圆极化微带天线的耦合馈电设计

本文深入探讨了利用HFSS仿真软件优化圆极化微带天线性能的关键方法。通过对比传统直接馈电与耦合馈电方式,详细阐述了耦合馈电在提升阻抗匹配、改善轴比带宽及增强设计鲁棒性方面的显著优势。文章结合FR4板材的实战案例,逐步演示了在HFSS中建立模型、进行参数扫描与圆极化性能优化的完整流程,为设计高性能、高纯度的圆极化天线提供了实用指南。

weixin_29233333的博客 547

活动兑现 之 无偿分享《JavaScript高级程序设计第四版》读书笔记只读版

作者正在系统学习《JavaScript高级程序设计第四版》,目前已阅读至786页,同步撰写了429页(16万字)的WPS格式读书笔记。相比之前使用的XMind,WPS更适合处理大量文字、代码批注和大文件。笔记包含书籍精华内容、验证过的示例代码和补充批注,并建立了个人博客项目系统整理代码示例。作者还制作了200多页前端面试题PPT。由于失业多年需重返职场,计划元旦前完成笔记并分享只读版,有偿提供完整版笔记与其他学习资料,同时积极准备求职。

木木的学习笔记 1006

FLUENT UDF编译及蒸发冷凝相关问题

蒸发冷凝与相间传质

weixin_48029137的博客 1万+

从零开始:IBM V3700控制器更换与机器代码升级全流程指南

本文详细介绍了IBM V3700存储系统控制器更换与机器代码升级的全流程指南。从前期准备、硬件更换到版本同步,逐步解析如何应对503错误等常见问题,确保系统稳定运行。通过实战案例和优化建议,帮助工程师高效完成维护任务,提升存储系统可用性。

weixin_28365523的博客 312

你是怎么看完《JavaScript权威指南》《JavaScript高级程序设计》等这类厚书的?

你是怎么看完《JavaScript权威指南》《JavaScript高级程序设计》等这类厚书的? 如果js属于刚刚入门阶段,不建议抱着书一直看下去,因为这样你不容易明白这些定义和概念的用法.看着看着就会很迷惑的。建议先试着用原生JS写一些小项目和小程序,然后试着写博客做些笔记,把遇到的困惑写下来,带着疑问去学习。 如果有一定的js基础或者用JQuery等一些库做过一些小东西的话,可以先看《JavaS...

weixin_42314466的博客 1413

MySQL 8.0数据库崩了别慌!手把手教你仅凭一个.ibd文件找回数据(附Go工具包)

本文详细介绍了在MySQL 8.0数据库崩溃后,如何仅凭.ibd文件恢复数据的完整流程。通过使用Go语言工具包和ALTER TABLE技巧,即使没有备份也能实现数据重生。文章包含从环境准备到数据验证的全方位指导,帮助DBA和开发者应对紧急数据恢复场景。

weixin_29235923的博客 421

《javascript高级程序设计》核心知识总结

此文是对js高级程序设计一书难点的总结,也是笔者在看了3遍之后的一些梳理和感想,希望能借此巩固js的基础和对一些核心概念有更深入的了解。摘要js基本的数据类型和关键点变量...

趣谈前端 999

Python爬虫-汽车之家各车系月销量榜数据

本文是该专栏的第41篇,后面会持续分享python爬虫干货知识。本文以某汽车平台为例,基于python采集该平台“各车系月销量”的榜单数据。具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看正文详细内容。(附带完整代码)

Python进阶专栏《爬虫实战进阶》,《Pyppeteer从入门到精通》原创作者 1620

拼多多笔试真题-多多送快递(C++/Py/Java /Js/Go)

拼多多技术岗笔试 8月2号真题,拼多多笔试第三题【多多送快递】,提供详细思路讲解以及Java、C++、Python、Go、JavaScript多语言代码实现。拼多多笔试真题【多多送快递】多语言题解。

qq_45776114的博客 295
上一篇: JavaScript高级程序设计读书笔记(第三章)(一)
下一篇: JavaScript高级程序设计读书笔记(第三章)(三)
程序员青戈
程序员青戈 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄10年 3万+粉丝 250原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员青戈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值