自动类型转换

在JavaScript中,使用 =====- 等运算符能够使得类型自动转换。

关于不同类型的值的比较

flase == 0;		//true
"" == flase; //true
"1" == 1; //true
"0" == false; //true
null == false; //flase
undefined == false; //false
undefined == null; //true
null == null; //true
undefined == undefined; //true

如上示例,0,空字符串等等都会转换成布尔类型的false。但是当遇见nullundefined 时,只有两边都是null或undefined 的情况下,才会返回true。

NaN

NaN特点:

  1. 任何涉及NaN的操作都会返回NaN
  2. NaN与任何值不相等,包括NaN本身

深入理解逻辑运算符 && 和 ||

以前一直的固有思维就是 &&|| 的逻辑运算符的使用产生的是boolean类型的值,即逻辑运算符产生的结果不是true就是false。图样图森破!

其实是这样,当比较的是布尔值,才会返回布尔值。如果是其他类型的值,则返回其他类型的值。

Demo1

var a = 1;
var b = 2;
console.log(a && b); //return 2
console.log(a || b); //return 1
a = 0;
console.log(a && b); //return 0
console.log(a || b); //return 2

由于 &&|| 的短路特性,对于&&来说,一旦左边的值可以转化为false时,就retrun左边的值;当左右两边的值都能转化为true时,则return右边的值,即Demo1中的b。

以此类推,对于||来说,当左边的值可以转化为true时,则return左边的值;当左边转化false,右边无论true or false都return右边。

撞了南墙也不回头的 & 和 |

&&|| 有短路的特性,而 &| 则是不“短路”与和不“短路”或。

A & B

假设A可以转化为false,依然会执行B。以此类推:

A | B

假设A可以转化为true,依然会执行B。

一个比较有意思的Demo:

Demo2

var a = 1;
var b = 2;
if ((a=3) & (b=4)){ }
console.log(a); //return 3
console.log(b); //return 4

上述Demo显示了&符号的不短路,还有 === 的区别。

JavaScript读书笔记(一)的更多相关文章

  1. 数据结构与算法JavaScript 读书笔记

    由于自己在对数组操作这块比较薄弱,然后经高人指点,需要好好的攻读一下这本书籍,原本想这个书名就比较高深,这下不好玩了.不过看着看着突然觉得讲的东西都比较基础.不过很多东西,平时还是没有注意到,故写出读 ...

  2. 你不知道的javascript读书笔记3

    概述 这是我看<你不知道的JavaScript(中卷)>中关于类型检查的笔记,供以后开发时参考,相信对其他人也有用. typeof 我们知道js中有七种内置类型:undefined, nu ...

  3. JavaScript读书笔记(1)

    从今天开启每天看书记笔记模式,<JavaScript高级程序设计(第3版)> 1. Javascript最初是为了解决输入验证器的问题,现在已经发展成一门复杂的语言: 2.  语言标准为E ...

  4. 悟透javascript读书笔记

    1.undefined,null,0,""  这四个值转换为逻辑值时是false,其他无论简单类型值,对象或者函数转换过来都是true 2.如图 第一个是“声明了一个变量,给变量赋 ...

  5. 高性能的JavaScript -- 读书笔记

    高性能的JavaScript 一.      加载和运行 将脚本放在底部 脚本下载解析执行时,页面已经加载完成并显示在用户面前 成组脚本 减少外部脚本文件数量,整合成一个文件 延迟脚本 动态脚本元素 ...

  6. <你不知道的JavaScript>读书笔记

    近几天看了一本不错的 JavaScript 的书,是 Kyle Simpson 写的 <You Don't know JS>.这本书是 Kyle Simpson 在 Github 上的开源 ...

  7. 编写可维护的Javascript读书笔记

    写在前面:之前硬着头皮参加了java方面的编程规范培训,收货良多,工作半年有余的时候,总算感觉到一丝丝Coding之美,以及造轮子的乐趣,以至于后面开发新功能的时候,在Coding style方面花了 ...

  8. 高性能JavaScript读书笔记

    零.组织结构 根据引言,作者将全书划分为四个部分: 一.页面加载js的最佳方式(开发前准备) 二.改善js代码的编程技巧(开发中) 三.构建与部署(发布) 四.发布后性能检测与问题追踪(线上问题优化) ...

  9. JavaScript读书笔记(4)-变量、作用域和内存问题

    1.ECMAScript数据类型分为:基本类型值和引用类型值: ECMAScript中所有函数的参数都是按值传递的: 检查对象的类型:varible instanceof constructor Al ...

随机推荐

  1. maven向本地仓库导入jar包(处理官网没有的jar包)

    对于官网没有的jar包,maven向本地仓库导入jar包用如下命令 mvn install:install-file -DgroupId=包名 -DartifactId=项目名 -Dversion=版 ...

  2. Python 3.x 连接数据库(pymysql 方式)

    ==================pymysql=================== 由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 ...

  3. AxureRp 打开SVN上的团队项目

    打开Axure,在菜单项中,点击 "团队" 菜单,选择 "获取团队项目": 切换到 "SVN" 选项, 填写正确的Axure项目的路径,打开 ...

  4. LeetCode 36 Valid Sudoku

    Problem: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board ...

  5. 初入水:vector

    ---恢复内容开始---Vector 是一个类模板.不是一种数据类型. Vector<int>是一种数据类型 类的作用,是一种顺序容器,支持随机访问,可动态分配空间(扩充:销毁旧内存,更新 ...

  6. mac显示任何来源

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px "Microsoft YaHei"; color: #333333; ba ...

  7. C# 动态调用DLL库

    最近经常用到C#动态调用类库,简单的做下记录方便以后查询. 使用下面的几行代码就可以简单实现DLL类库的调用了 using System.Reflection; // 引入该命名空间 // 获取roc ...

  8. jquery遍历不同色彩的li

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 关于sql的执行顺序

    标准sql的解析顺序为 1)FROM子句,组装来自不同数据源的数据 2)WHERE子句 基于制定的条件对记录进行筛选 3)GROUP BY 子句将数据划分为多个分组 4)使用聚合函数进行计算 5) 使 ...

  10. JS判断有无网络(移动端)

    ar EventUtil = { addHandler: function (element, type, handler) { if (element.addEventListener) { ele ...