你必须知道的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 相关文章推荐
kmock javascript 单元测试代码
Feb 06 Javascript
js 可拖动列表实现代码
Dec 13 Javascript
Javascript基础教程之数据类型 (字符串 String)
Jan 18 Javascript
jquery序列化方法实例分析
Jun 10 Javascript
解决JavaScript数字精度丢失问题的方法
Dec 03 Javascript
在其他地方你学不到的jQuery小贴士和技巧(欢迎收藏)
Jan 20 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
Sep 28 Javascript
支持移动端原生js轮播图
Feb 16 Javascript
将 vue 生成的 js 上传到七牛的实例
Jul 28 Javascript
详解layui中的树形关于取值传值问题
Jan 16 Javascript
这样回答继承可能面试官更满意
Dec 10 Javascript
Vant 在vue-cli 4.x中按需加载操作
Nov 05 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设计聊天室步步通
2006/10/09 PHP
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
pw的一个放后门的方法分析
2007/10/08 PHP
php在页面中调用fckeditor编辑器的方法
2011/06/10 PHP
逆序二维数组插入一元素的php代码
2012/06/08 PHP
PHP设置一边执行一边输出结果的代码
2013/09/30 PHP
JS 控制小数位数的实现代码
2011/08/02 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
JQuery球队选择实例
2015/05/18 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
微信小程序 新建登录页并实现tabBar隐藏
2017/06/13 Javascript
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
Python使用minidom读写xml的方法
2015/06/03 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
2017/05/18 Python
Python编程中NotImplementedError的使用方法
2018/04/21 Python
python3.6使用pymysql连接Mysql数据库
2018/05/25 Python
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
详解PyTorch手写数字识别(MNIST数据集)
2019/08/16 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
2019/08/24 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
2019/09/05 Python
Python 图像对比度增强的几种方法(小结)
2019/09/25 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
英国知名的皮手套品牌:Dents
2016/11/13 全球购物
英国领先的瓷砖专家:Walls and Floors
2018/04/27 全球购物
Guess欧洲官网:美国服饰品牌
2019/08/06 全球购物
2015年社区教育工作总结
2015/05/13 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
亲情作文之母爱
2019/09/25 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers
详解Python 3.10 中的新功能和变化
2021/04/28 Python
简单总结SpringMVC拦截器的使用方法
2021/06/28 Java/Android