你必须知道的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 相关文章推荐
JS target与currentTarget区别说明
Aug 28 Javascript
web网页按比例显示图片实现原理及js代码
Aug 09 Javascript
extjs render 用法介绍
Sep 11 Javascript
js网页滚动条滚动事件实例分析
May 05 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
Mar 05 Javascript
jQuery与JavaScript节点创建方法的对比
Nov 18 Javascript
VUE 更好的 ajax 上传处理 axios.js实现代码
May 10 Javascript
vue 开发一个按钮组件的示例代码
Mar 27 Javascript
实例介绍JavaScript中多种组合继承
Jan 20 Javascript
微信小程序实现时间戳格式转换
Jul 20 Javascript
jQuery实现滑动开关效果
Aug 02 jQuery
详解nginx配置vue h5 history去除#号
Nov 09 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
php 猴子摘桃的算法
2017/06/20 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
JS中style属性
2006/10/11 Javascript
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
2010/06/12 Javascript
分享14个很酷的jQuery导航菜单插件
2011/04/25 Javascript
jQuery ajax 路由和过滤器使用说明
2011/08/02 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
JS基于clipBoard.js插件实现剪切、复制、粘贴
2016/05/03 Javascript
js基础之DOM中document对象的常用属性方法详解
2016/10/28 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
Bootstrap表格制作代码
2017/03/17 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
vue最简单的前后端交互示例详解
2018/10/11 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
Vue infinite update loop的问题解决
2019/04/23 Javascript
vue搜索和vue模糊搜索代码实例
2019/05/07 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
2019/12/04 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
详解在Python程序中使用Cookie的教程
2015/04/30 Python
Python图像的增强处理操作示例【基于ImageEnhance类】
2019/01/03 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
Pycharm debug调试时带参数过程解析
2020/02/03 Python
Python如何将模块打包并发布
2020/08/30 Python
CSS3教程(7):CSS3嵌入字体
2009/04/02 HTML / CSS
超市促销活动方案
2014/03/05 职场文书
司机职责范本
2014/03/08 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
教师批评与自我批评(群众路线)
2014/10/15 职场文书
工商局个人工作总结
2015/03/03 职场文书
小学语文教师研修日志
2015/11/13 职场文书
上帝为你开了一扇窗之Tkinter常用函数详解
2021/06/02 Python
Nginx缓存设置案例详解
2021/09/15 Servers
使用Python通过企业微信应用给企业成员发消息
2022/04/18 Python