你必须知道的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 相关文章推荐
利用Ext Js生成动态树实例代码
Sep 08 Javascript
jquery获取下拉列表的值为null的解决方法
Mar 18 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
Nov 15 Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
May 13 Javascript
js的.innerHTML = ""IE9下显示有错误的解决方法
Sep 16 Javascript
jQuery Mobile的loading对话框显示/隐藏方法分享
Nov 26 Javascript
重写document.write实现无阻塞加载js广告(补充)
Dec 12 Javascript
artDialog+plupload实现多文件上传
Jul 19 Javascript
详解为生产环境编译Angular2应用的方法
Dec 10 Javascript
JavaScript遍历DOM元素的常见方式示例
Feb 16 Javascript
vue获取时间戳转换为日期格式代码实例
Apr 17 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
Aug 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常用Stream函数集介绍
2013/06/24 PHP
php实现根据词频生成tag云的方法
2015/04/17 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
网页中CDATA标记的说明
2010/09/12 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
javascript实现div的显示和隐藏的小例子
2013/06/25 Javascript
ExtJS DOM元素操作经验分享
2013/08/28 Javascript
js中关于一个分号的崩溃示例
2013/11/11 Javascript
JS批量操作CSS属性详细解析
2013/12/16 Javascript
jquery select 设置默认选中的示例代码
2014/02/07 Javascript
js实现div的切换特效上一个下一个
2014/02/11 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
2014/02/28 Javascript
js实现回放拖拽轨迹从过程上进行分析
2014/06/26 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
2014/08/01 Javascript
javascript使用正则获取url上的某个参数
2014/09/04 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
JavaScript动态生成表格的示例
2020/11/02 Javascript
vue二选一tab栏切换新做法实现
2021/01/19 Vue.js
python实现SMTP邮件发送功能
2020/06/16 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
Zookeeper接口kazoo实例解析
2018/01/22 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
详解python中的index函数用法
2019/08/06 Python
容易被忽略的Python内置类型
2020/09/03 Python
Django model class Meta原理解析
2020/11/14 Python
Python实例教程之检索输出月份日历表
2020/12/16 Python
Python爬虫之Selenium库的使用方法
2021/01/03 Python
STP协议的主要用途是什么?为什么要用STP
2012/12/20 面试题
干部个人对照检查材料
2014/08/25 职场文书
师德师风学习材料
2014/12/19 职场文书
秦始皇兵马俑导游词
2015/02/02 职场文书
Python Matplotlib绘制动画的代码详解
2022/05/30 Python