你必须知道的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 相关文章推荐
Javascript之旅 对象的原型链之由来
Aug 25 Javascript
jquery控制listbox中项的移动并排序的实现代码
Sep 28 Javascript
js控制CSS样式属性语法对照表
Dec 11 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
Jan 15 Javascript
简介JavaScript中的setHours()方法的使用
Jun 11 Javascript
JavaScript常用本地对象小结
Mar 28 Javascript
如何使用JS在HTML中自定义字符串格式化
Jul 20 Javascript
vue项目中使用lib-flexible解决移动端适配的问题解决
Aug 23 Javascript
vue单页面在微信下只能分享落地页的解决方案
Apr 15 Javascript
用vscode开发vue应用的方法步骤
May 06 Javascript
javascript实现图片轮播代码
Jul 09 Javascript
Vue-cli4 配置 element-ui 按需引入操作
Sep 11 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
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
JavaScript创建类/对象的几种方式概述及实例
2013/05/06 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
JS中判断null、undefined与NaN的方法
2014/03/26 Javascript
js数组与字符串的相互转换方法
2014/07/09 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
jquery实现Ctrl+Enter提交表单的方法
2015/07/21 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
基于jQuery 实现bootstrapValidator下的全局验证
2015/12/07 Javascript
理解javascript定时器中的单线程
2016/02/23 Javascript
简单实现js悬浮导航效果
2017/02/05 Javascript
js 获取图像缩放后的实际宽高,位置等信息
2017/03/07 Javascript
原生JavaScript实现的简单放大镜效果示例
2018/02/07 Javascript
Node.js log4js日志管理详解
2018/07/31 Javascript
vuex + keep-alive实现tab标签页面缓存功能
2019/10/17 Javascript
在Vue项目中使用Typescript的实现
2019/12/19 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
微信小程序用户盒子、宫格列表的实现
2020/07/01 Javascript
javascript运行机制之执行顺序理解
2020/08/03 Javascript
[04:16]完美世界DOTA2联赛PWL S2 集锦第一期
2020/11/23 DOTA
python控制台英汉汉英电子词典
2020/04/23 Python
Python转换HTML到Text纯文本的方法
2015/01/15 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
Python实现图片转字符画的代码实例
2019/02/22 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
2019/03/18 Python
python+adb命令实现自动刷视频脚本案例
2020/04/23 Python
html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
2014/05/08 HTML / CSS
顶撞老师检讨书
2014/02/07 职场文书
博士毕业生自我鉴定范文
2014/04/13 职场文书
投标人廉洁自律承诺书
2014/05/26 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
拾金不昧感谢信范文
2015/01/21 职场文书
导游词之临安白水涧
2019/11/05 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang
详解Python中下划线的5种含义
2021/07/15 Python