Javascript 学习 笔记三
2015-11-05 20:54
549 查看
1、Javascript 组成:
ECMAScript--JavaScript的核心,描述了语言的基本语法和对象。DOM(文档对象模型)--The Document Object Model描述了作用于网页内容的方法和接口。document的操作,比如:
var lis = document.getElementsByTagName('li');BOM(浏览器对象模型):The Browser Object Model描述了和浏览器交互的方法和接口。window的操作,比如:
window.onload = function () {
}
2、“==”和“===”运算符(该详细介绍来自知乎林建入,原文地址:点击打开链接)
一、严格相等运算符 === 的实现
=== 被称为 Strict Equals Operator,假设有表达式 a === b,则它的实际运算过程如下计算出表达式 a 的结果,并存入 lref 变量
将 GetValue(lref) 的结果存入 lval 变量
计算出表达式 b 的结果,并存入 rref 变量
将 GetValue(rref) 的结果存入 rval 变量
执行 Strict Equality Comparison 算法判断 rval === lval 并将结果直接返回
这里的 Strict Equality Comparison 算法很关键,假设要计算的是 x === y,则过程如下1. 如果 Type(x) 和 Type(y) 不同,返回 false2. 如果 Type(x) 为 Undefined,返回 true3. 如果 Type(x) 为 Null,返回 true4. 如果 Type(x) 为 Number,则进入下面的判断逻辑4.1. 如果 x 为 NaN,返回 false4.2. 如果 y 为 NaN,返回 false4.3. 如果 x 的数字值和 y 相等,返回 true4.4. 如果 x 是 +0 且 y 是 -0,返回 true4.5. 如果 x 是 -0 且 y 是 +0,返回 ture4.6. 返回 false5. 如果 Type(x) 为 String,则当且仅当 x 与 y 的字符序列完全相同(长度相等,每个位置上的字符相同)时返回 true,否则返回 false6. 如果 Type(x) 为 Boolean,则若 x 与 y 同为 true 或同为 false 时返回 true,否则返回 false7. 如果 x 和 y 引用的是同一个对象,返回 true,否则返回 false
二、相等运算符 == 的实现
好了,当你明白了 === 的实现之后,我们再来看看 == 的实现,比较一下他们有何不同?== 被称为 Equals Operator (注意看没有 Strict 了),假设有表达式 a == b,则它的实际运算过程如下
计算出表达式 a 的结果,并存入 lref 变量
将 GetValue(lref) 的结果存入 lval 变量
计算出表达式 b 的结果,并存入 rref 变量
将 GetValue(rref) 的结果存入 rval 变量
执行 Abstract Equality Comparison 算法判断 rval == lval 并将结果直接返回
注意,其中的前 4 个步骤是和 === 完全相同的。唯独 5 不同。对于 === 来说,调用的是 Strict Equality Comparison 算法,但是 == 则调用的是 Abstract Equality Comparison 算法。虽然仅一词之差,但是却有质的不同,我们下面就来看看到底它是怎么实现的
假设要计算的是 x == y,Abstract Equality Comparison 计算的过程如下(很冗长,但是每个步骤都很简单)
1. 如果 Type(x) 和 Type(y) 相同,则1.1. 如果 Type(x) 为 Undefined,返回 true1.2. 如果 Type(x) 为 Null,返回 true1.3. 如果 Type(x) 为 Number,则1.3.1. 如果 x 是 NaN,返回 false1.3.2. 如果 y 是 NaN,返回 false1.3.3. 如果 x 的数值与 y 相同,返回 true1.3.4. 如果 x 是 +0 且 y 是 -0,返回 true1.3.5. 如果 x 是 -0 且 y 是 +0,返回 true1.3.6. 返回 false1.4. 如果 Type(x) 为 String,则当且仅当 x 与 y 的字符序列完全相同(长度相等,每个位置上的字符相同)时返回 true,否则返回 false1.5. 如果 Type(x) 为 Boolean,则若 x 与 y 同为 true 或同为 false 时返回 true,否则返回 false1.6. 如果 x 和 y 引用的是同一个对象,返回 true,否则返回 false2. 如果 x 是 null 且 y 是 undefined,返回 true3. 如果 x 是 undefined 且 y 是 null,返回 ture4. 如果 Type(x) 为 Number 且 Type(y) 为 String,以 x == ToNumber(y) 的比较结果作为返回5. 如果 Type(x) 为 String 且 Type(y) 为 Number,以 ToNumber(x) == y 的比较结果作为返回值6. 如果 Type(x) 为 Boolean,以 ToNumber(x) == y 的比较结果作为返回值7. 如果 Type(y) 为 Boolean,以 x == ToNumber(y) 的比较结果作为返回值8. 如果 Type(x) 为 String 或 Number 且 Type(y) 为 Object,以 x == ToPrimitive(y) 的比较结果作为返回值9. 如果 Type(x) 为 Object 且 Type(y) 为 String 或 Number,以 ToPrimitive(x) == y 的比较结果作为返回值10. 返回 false
三、总结
从上面的算法流程可以看出,a === b 是最简单的。如果 a 和 b 的类型不同,那么一定会返回 false。而 a == b 则要灵活得多。JavaScript 会尝试调整 a 和 b 的类型,例如若 a 为字符串 b 为数字,则将字符串先转化为数字再与 b 比较,等等。这在很多时候简化了程序员的代码量。3、JavaScript中的数据真假判断
使用if(value)判断真假的情况:当value为undefined、null、fasle、0、空字符串(不是使用new String("")定义)时,value为假,其他情况为真。
4、for...in 语句
for...in 语句用于对数组或者对象的属性进行循环操作。for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。
语法:
for (变量 in 对象)
{
在此执行代码
}“变量”用来指定变量,指定的变量可以是数组元素,也可以是对象的属性。
作者:jiankunking 出处:http://blog.csdn.net/jiankunking
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- Oracle Containers for J2EE远程安全漏洞(CVE-2014-0413)
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- IE8开发人员工具教程(二)
- 在flex中执行一个javascript方法的简单方式
- 杀毒软件 Dr.Web Anti-virus for Windows Vista 4.44.0 Beta
- Flex结合JavaScript读取本地路径的方法
- Ruby on Rails中jquery_ujs组件拖慢速度的问题解决