你必须知道的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判断浏览器是否是IE的比较好的办法
May 08 Javascript
jquery cookie插件代码类
May 26 Javascript
Jquery升级新版本后选择器的语法问题
Jun 02 Javascript
js动态往表格的td中添加图片并注册事件
Jun 12 Javascript
jQuery针对各类元素操作基础教程
Aug 29 Javascript
JavaScript实现点击自动选择TextArea文本的方法
Jul 02 Javascript
用jQuery向div中添加Html文本内容的简单实现
Jul 13 Javascript
jquery 动态增加删除行的简单实例(推荐)
Oct 12 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
Feb 07 Javascript
Vue分页组件实例代码
Apr 17 Javascript
node.JS md5加密中文与php结果不一致的解决方法
May 05 Javascript
JS库之wow.js使用方法
Sep 14 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中去除所有js,html,css代码
2010/10/12 PHP
PHP7常量数组用法分析
2016/09/26 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
JavaScript 继承详解(二)
2009/07/13 Javascript
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
jquery入门—访问DOM对象方法
2013/01/07 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
JavaScript实现选择框按比例拖拉缩放的方法
2015/08/04 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
原生js配合cookie制作保存路径的拖拽
2015/12/29 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
利用Node.js编写跨平台的spawn语句详解
2017/02/12 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
2017/05/05 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
JS库之Three.js 简易入门教程(详解之一)
2017/09/13 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
2019/06/03 Javascript
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
浅谈layui 数据表格前后台传值的问题
2019/09/12 Javascript
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
在Python中使用异步Socket编程性能测试
2014/06/25 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
Python django框架应用中实现获取访问者ip地址示例
2019/05/17 Python
Python读取表格类型文件代码实例
2020/02/17 Python
scrapy结合selenium解析动态页面的实现
2020/09/28 Python
详解Pycharm第三方库的安装及使用方法
2020/12/29 Python
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
财务人员个人自荐信范文
2013/09/26 职场文书
节约粮食标语
2014/06/18 职场文书
部门经理助理岗位职责
2015/04/13 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers
pytorch查看网络参数显存占用量等操作
2021/05/12 Python
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python
vue+element ui实现锚点定位
2021/06/29 Vue.js
全网非常详细的pytest配置文件
2022/07/15 Python