你必须知道的Javascript知识点之"字面量和对应类型"说明介绍


Posted in Javascript onApril 23, 2013

代码示例:

var date1 = new Date(2013,1,1);
 var date2 = new Date(2013,1,1);
 date1 == date2;  //执行结果为false
 date1 === date2;  //执行结果为false var num1 = new Number(10);
 var num2 = new Number(10);
 num1 == num2;  //执行结果为false
 num1 === num2;  //执行结果为false
 num1 == 10;  //执行结果为true
 10 == num2;  //执行结果为true
 num1 === 10;  //执行结果为false
 10 === num2;  //执行结果为false

之所以要写这个主题,是因为日期类型的比较经常会出现意想不到的错误,几乎每个刚接触javascript的开发人员都会遇到这个问题。

到底是为什么
规则1
javascript中一切都是对象(引用类型),除了这几个类型的字面量(值类型):Boolean(如:true)、Number(如:100)、undefined、null。

规则2
引用类型之间用"=="或“===”做比较运算时,只要两者不是指向同一份内存地址,都会返回false。

代码示例

var date1 = new Date(2013,1,1);
var date2 = new Date(2013,1,1);
date1 == date2;  //执行结果为false
date1 === date2;  //执行结果为false

图片示意

你必须知道的Javascript知识点之"字面量和对应类型"说明介绍

规则3

引用类型和对应的值类型之间用“=="做比较运算时,会先进行类型转换,然后进行比较。

代码示例

var num1 = new Number(10);
  var num2 = new Number(10);
  num1 == 10;  //执行结果为true
  10 == num2;  //执行结果为true

规则4引用类型和对应的值类型之间用“==="做比较运算时,始终返回false。

代码示例

var num1 = new Number(10);
  var num2 = new Number(10);
  num1 === 10;  //执行结果为false
  10 === num2;  //执行结果为false

特殊的String类型
string是特殊的引用类型,javascript解释器遇到两个一样的字面量会未他们分配同一个内存地址,javascript本身也保持值语义(一旦创建不能修改)。
代码示例
var str1 = new String('hello');
 var str2 = new String('hello');
 var str3 = 'hello';
 var str4 = 'hello'; str1 == str2  //指向结果为false
 str1 === str2  //指向结果为false
 str3 == str4  //指向结果为true
 str3 === str4  //指向结果为true
 str2 == str4  //指向结果为true
 str2 === str4  //指向结果为false

图片示意
你必须知道的Javascript知识点之"字面量和对应类型"说明介绍

值类型的内存格局

代码示例

1 var num1 = 1;2 var num2 = 1;

图片示意
你必须知道的Javascript知识点之"字面量和对应类型"说明介绍

Javascript 相关文章推荐
jquery tools系列 expose 学习
Sep 06 Javascript
Javascript 自适应高度的Tab选项卡
Apr 05 Javascript
javaScript复制功能调用实现方案
Dec 13 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
Mar 27 Javascript
javascript 获取HTML DOM父、子、临近节点
Jun 16 Javascript
js实现DOM走马灯特效的方法
Jan 21 Javascript
JS自定义选项卡函数及用法实例分析
Sep 02 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
Mar 11 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
Jul 09 Javascript
Javascript实现秒表倒计时功能
Nov 17 Javascript
vue 如何使用递归组件
Oct 23 Javascript
vue element el-transfer增加拖拽功能
Jan 15 Vue.js
你必须知道的Javascript知识点之"单线程事件驱动"的使用
Apr 23 #Javascript
你必须知道的Javascript知识点之"this指针"的应用
Apr 23 #Javascript
jquery清空textarea等输入框实现代码
Apr 22 #Javascript
js计算精度问题小结
Apr 22 #Javascript
基于javascipt-dom编程 table对象的使用
Apr 22 #Javascript
用js实现小球的自由移动代码
Apr 22 #Javascript
jquery打开直接跳到网页最下面、最低端实现代码
Apr 22 #Javascript
You might like
PHP中的output_buffering详细介绍
2014/09/27 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
PHP结合Jquery和ajax实现瀑布流特效
2016/01/07 PHP
img标签中onerror用法
2009/08/13 Javascript
javascript Object与Function使用
2010/01/11 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
杨氏矩阵查找的JS代码
2013/03/21 Javascript
ionic环境配置及问题详解
2017/06/27 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
2017/12/25 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
2018/03/20 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
2018/10/10 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
vue组件是如何解析及渲染的?
2021/01/13 Vue.js
[03:05]《我与DAC》之xiao8:DAC与BG
2018/03/27 DOTA
[04:22]DOTA2大事件之护国神翼
2020/08/14 DOTA
Python中字典映射类型的学习教程
2015/08/20 Python
python中csv文件的若干读写方法小结
2018/07/04 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
2018/12/24 Python
Python实现Word表格转成Excel表格的示例代码
2020/04/16 Python
keras 权重保存和权重载入方式
2020/05/21 Python
Python类型转换的魔术方法详解
2020/12/23 Python
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能
2019/07/09 HTML / CSS
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
大专生自荐信
2013/10/04 职场文书
什么是岗位职责
2013/11/12 职场文书
工作室成员个人发展规划范文
2014/01/24 职场文书
总经理司机岗位职责
2014/02/06 职场文书
厉行勤俭节约倡议书
2014/05/16 职场文书
车辆转让协议书
2014/09/24 职场文书
师德自我剖析材料范文
2014/10/06 职场文书
2014年资料员工作总结
2014/11/18 职场文书
小学音乐课教学反思
2016/02/18 职场文书
Go 语言中 20 个占位符的整理
2021/10/16 Golang
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS
Apache Kafka 分区重分配的实现原理解析
2022/07/15 Servers