你必须知道的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 相关文章推荐
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
Feb 07 Javascript
js跨域问题之跨域iframe自适应大小实现代码
Jul 17 Javascript
谈一谈jQuery核心架构设计
Mar 28 Javascript
AngularJS 单元测试(二)详解
Sep 21 Javascript
基于JavaScript实现带缩略图的轮播效果
Jan 12 Javascript
详解创建自定义的Angular Schematics
Jun 06 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
Jan 21 Javascript
webpack-url-loader 解决项目中图片打包路径问题
Feb 15 Javascript
vue使用Font Awesome的方法步骤
Feb 26 Javascript
JS实现随机点名器
Apr 12 Javascript
微信小程序基础教程之echart的使用
Jun 01 Javascript
微信小程序中wxs文件的一些妙用分享
Feb 18 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
浅析Mysql 数据回滚错误的解决方法
2013/08/05 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
2015/07/01 PHP
php利用gd库为图片添加水印
2016/11/09 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
prototype 的说明 js类
2006/09/07 Javascript
prototype class详解
2006/09/07 Javascript
JS OOP包机制,类创建的方法定义
2009/11/02 Javascript
兼容IE和Firefox的javascript获取iframe文档内容的函数
2011/08/15 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
jquery 多行文本框(textarea)高度变化
2013/07/03 Javascript
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
2015/09/30 Javascript
iframe中使用jquery进行查找的方法【案例分析】
2016/06/17 Javascript
Angualrjs和bootstrap相结合实现数据表格table
2017/03/30 Javascript
JavaScript错误处理操作实例详解
2019/01/04 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
详解详解Python中writelines()方法的使用
2015/05/25 Python
详解Python 数据库 (sqlite3)应用
2016/12/07 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
如何利用python查找电脑文件
2018/04/27 Python
Python处理中文标点符号大集合
2018/05/14 Python
python实现随机漫步算法
2018/08/27 Python
Python logging模块用法示例
2018/08/28 Python
深入了解Python iter() 方法的用法
2019/07/11 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
2020/01/20 Python
pyqt5中动画的使用详解
2020/04/01 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
德国孕妇装和婴童服装网上商店:bellybutton
2018/04/12 全球购物
医生自荐信
2013/10/11 职场文书
计算机毕业生求职信
2014/06/10 职场文书
职位证明模板
2015/06/23 职场文书
趣味运动会简讯
2015/07/20 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书