你必须知道的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 相关文章推荐
wordpress之js库集合研究介绍
Aug 17 Javascript
jquery 插件 人性化的消息显示
Jan 21 Javascript
js 数据类型转换总结笔记
Jan 17 Javascript
JS继承--原型链继承和类式继承
Apr 08 Javascript
Knockoutjs 学习系列(二)花式捆绑
Jun 07 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
Nov 18 Javascript
node.js+jQuery实现用户登录注册AJAX交互
Apr 28 jQuery
完美解决axios在ie下的兼容性问题
Mar 05 Javascript
bing Map 在vue项目中的使用详解
Apr 09 Javascript
Vue框架里使用Swiper的方法示例
Sep 20 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
Dec 05 Javascript
在vue中使用vant TreeSelect分类选择组件操作
Nov 02 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
WML,Apache,和 PHP 的介绍
2006/10/09 PHP
PHP MemCached高级缓存配置图文教程
2010/08/05 PHP
CI框架文件上传类及图像处理类用法分析
2016/05/18 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
jQuery学习笔记之创建DOM元素
2015/01/19 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
JS遍历页面所有对象属性及实现方法
2016/08/01 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
vue引入swiper插件的使用实例
2017/07/19 Javascript
Webpack之tree-starking 解析
2018/09/11 Javascript
微信小程序发送短信验证码完整实例
2019/01/07 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
vue实现短信验证码输入框
2020/04/17 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
Python随机生成手机号、数字的方法详解
2017/07/21 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
详解如何管理多个Python版本和虚拟环境
2019/05/10 Python
Win10下Python3.7.3安装教程图解
2019/07/08 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
2019/08/06 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
台湾母婴用品购物网站:Infant婴之房
2018/06/15 全球购物
东芝官网商城:还原日式美学,打造美好生活
2018/12/27 全球购物
2014年五一促销活动方案
2014/03/09 职场文书
采购意向书范本
2014/03/31 职场文书
股权收购意向书
2014/04/01 职场文书
最常使用的求职信
2014/05/25 职场文书
建筑结构施工求职信
2014/07/11 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android