你必须知道的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 相关文章推荐
菜鸟javascript基础资料整理3 正则
Dec 06 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
Oct 29 Javascript
JQuery与JS里submit()的区别示例介绍
Feb 17 Javascript
javascript内置对象操作详解
Feb 04 Javascript
JavaScript:Array类型全面解析
May 19 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
Oct 18 Javascript
js实现图片旋转 js滚动鼠标中间对图片放大缩小
Jul 05 Javascript
node.js部署之启动后台运行forever的方法
May 23 Javascript
JavaScript使用localStorage存储数据
Sep 25 Javascript
JS回调函数深入理解
Oct 16 Javascript
JS数组的高级使用方法示例小结
Mar 14 Javascript
vue 实现超长文本截取,悬浮框提示
Jul 29 Javascript
你必须知道的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
教你如何把一篇文章按要求分段
2006/10/09 PHP
php_xmlhttp 乱码问题解决方法
2009/08/07 PHP
php简单随机字符串生成方法示例
2017/04/19 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
基于jquery的多功能软键盘插件
2012/07/25 Javascript
表单类各种类型(文本框)失去焦点效果jquery代码
2013/04/26 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
JS实现前端缓存的方法
2017/09/21 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
2018/08/16 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
js实现鼠标滑动到某个div禁止滚动
2020/09/17 Javascript
[48:41]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
Python利用operator模块实现对象的多级排序详解
2017/05/09 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
python 文件查找及内容匹配方法
2018/10/25 Python
Python Matplotlib库安装与基本作图示例
2019/01/09 Python
Python发展简史 Python来历
2019/05/14 Python
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
Urban Outfitters美国官网:美国生活方式品牌
2016/08/26 全球购物
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
学子宴答谢词
2014/01/25 职场文书
大二法英学生职业生涯规划范文
2014/02/27 职场文书
法人授权委托书
2014/04/03 职场文书
工程售后服务方案
2014/06/08 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
思想作风建设心得体会
2014/10/22 职场文书
学校清洁工岗位职责
2015/04/15 职场文书
初中英语教学随笔
2015/08/15 职场文书
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS