你必须知道的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+CSS 图片等比缩小并垂直居中实现代码
Dec 01 Javascript
javascript类继承机制的原理分析
Sep 12 Javascript
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
Jan 22 Javascript
webapp框架AngularUI的demo改造之路
Dec 21 Javascript
jQuery中parents()方法用法实例
Jan 07 Javascript
jquery操作复选框checkbox的方法汇总
Feb 05 Javascript
jquery动态添加文本并获取值的方法
Oct 12 Javascript
Vue-Router实现组件间跳转的三种方法
Nov 07 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
Dec 20 Javascript
快速了解vue-cli 3.0 新特性
Feb 28 Javascript
Vue实现active点击切换方法
Mar 16 Javascript
js实现超级玛丽小游戏
Mar 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
第八节 访问方式 [8]
2006/10/09 PHP
PHP 学习路线与时间表
2010/02/21 PHP
php中使用临时表查询数据的一个例子
2013/02/03 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
JavaScript让IE浏览器event对象符合W3C DOM标准
2009/11/24 Javascript
node.js中的fs.rmdir方法使用说明
2014/12/16 Javascript
Jquery 实现图片轮换
2015/01/28 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
2020/05/16 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
Ajax跨域实现代码(后台jsp)
2017/01/21 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
前端插件之Bootstrap Dual Listbox使用教程
2019/07/23 Javascript
Vue.js自定义指令学习使用详解
2019/10/19 Javascript
微信小程序页面渲染实现方法
2019/11/06 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
Python(Tornado)模拟登录小米抢手机
2013/11/12 Python
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
浅谈pycharm出现卡顿的解决方法
2018/12/03 Python
python判断链表是否有环的实例代码
2020/01/31 Python
Staples英国官方网站:办公用品一站式采购
2017/10/06 全球购物
请说出你所知道的线程同步的方法
2013/04/19 面试题
函授本科毕业自我鉴定
2013/10/09 职场文书
会计学专业学生的求职信范文
2014/01/27 职场文书
元旦晚会策划方案
2014/02/18 职场文书
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
装修协议书范本
2014/04/21 职场文书
单位委托书怎么写
2014/08/02 职场文书
弄虚作假心得体会
2014/09/10 职场文书
2015年春节标语口号
2014/12/09 职场文书
食堂采购员岗位职责
2015/04/03 职场文书
基于CSS3画一个iPhone
2021/04/21 HTML / CSS
Python之基础函数案例详解
2021/08/30 Python