你必须知道的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圆形浮动菜单特效代码
Mar 03 Javascript
javascript开发中因空格引发的错误
Nov 08 Javascript
Javascript Request获取请求参数如何实现
Nov 28 Javascript
图片img的src不变让浏览器重新加载实现方法
Mar 29 Javascript
JavaScript简单实现网页回到顶部功能
Nov 12 Javascript
JavaScript开发者必备的10个Sublime Text插件
Feb 27 Javascript
JQuery学习总结【二】
Dec 01 Javascript
JavaScript中定义对象原型的两种使用方法
Dec 15 Javascript
node.js博客项目开发手记
Mar 16 Javascript
jQuery实现的模仿雨滴下落动画效果
Dec 11 jQuery
jquery轮播图插件使用方法详解
Jul 31 jQuery
vue制作toast组件npm包示例代码
Oct 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
《星际争霸2》终章已出 RTS时代宣告终结
2017/02/07 星际争霸
php变量作用域的深入解析
2013/06/03 PHP
php定义数组和使用示例(php数组的定义方法)
2014/03/29 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
动态调用CSS文件的JS代码
2010/07/29 Javascript
jQuery Tips 为AJAX回调函数传递额外参数的方法
2010/12/28 Javascript
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
2014/06/09 Javascript
js实现遮罩层划出效果是生成div而不是显示
2014/07/29 Javascript
JavaScript中的值类型详细介绍
2014/12/29 Javascript
jQuery简单实现彩色云标签效果示例
2016/08/01 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
详谈JavaScript的闭包及应用
2017/01/17 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
2018/12/14 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
原生JS实现音乐播放器的示例代码
2021/02/25 Javascript
[06:14]《辉夜杯》外卡赛附加赛 4支战队巡礼
2015/10/23 DOTA
python利用装饰器进行运算的实例分析
2015/08/04 Python
浅谈Python实现2种文件复制的方法
2018/01/19 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
python 实现语音聊天机器人的示例代码
2018/12/02 Python
django+echart数据动态显示的例子
2019/08/12 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
简单了解pytest测试框架setup和tearDown
2020/04/14 Python
解决django框架model中外键不落实到数据库问题
2020/05/20 Python
苹果美国官方商城:Apple美国
2016/08/24 全球购物
大学生自我鉴定范文
2013/12/28 职场文书
给校长的建议书200字
2014/05/16 职场文书
2015年公司保安年终工作总结
2015/05/14 职场文书
详解mysql三值逻辑与NULL
2021/05/19 MySQL
CSS+HTML 实现顶部导航栏功能
2021/08/30 HTML / CSS
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang
分享3个非常实用的 Python 模块
2022/03/03 Python