你必须知道的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 相关文章推荐
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
Nov 30 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
Jun 20 Javascript
JS 打印功能代码可实现打印预览、打印设置等
Oct 31 Javascript
node.js 动态执行脚本
Jun 02 Javascript
微信小程序 简单教程实例详解
Jan 13 Javascript
JavaScript实现无穷滚动加载数据
May 06 Javascript
angularjs实现搜索的关键字在正文中高亮出来
Jun 13 Javascript
angularJs的ng-class切换class
Jun 23 Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
Aug 15 jQuery
jQuery实现动画、消失、显现、渐出、渐入效果示例
Sep 06 jQuery
微信小程序 网络通信实现详解
Jul 23 Javascript
JavaScript快速调试的两个技巧
Nov 04 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
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
2014/10/21 PHP
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
js几秒以后倒计时跳转示例
2013/12/26 Javascript
js中生成map对象的方法
2014/01/09 Javascript
Javascript中的delete操作符详细介绍
2014/06/06 Javascript
JavaScript定义类和对象的方法
2014/11/26 Javascript
浅谈js中对象的使用
2016/08/11 Javascript
JS实现漂亮的时间选择框效果
2016/08/20 Javascript
浅析BootStrap Treeview的简单使用
2016/10/12 Javascript
javascript入门之window对象【新手必看】
2016/11/22 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
vue集成chart.js的实现方法
2019/08/20 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
2020/05/06 Javascript
深入理解javascript中的this
2021/02/08 Javascript
python中lambda函数 list comprehension 和 zip函数使用指南
2014/09/28 Python
python连接字符串的方法小结
2015/07/13 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
2018/08/22 Python
Python简易计算器制作方法代码详解
2019/10/31 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
Python实现不规则图形填充的思路
2020/02/02 Python
Django模板之基本的 for 循环 和 List内容的显示方式
2020/03/31 Python
keras实现基于孪生网络的图片相似度计算方式
2020/06/11 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
python制作微博图片爬取工具
2021/01/16 Python
武汉高蓝德国际.net机试
2016/06/24 面试题
心理健康教育制度
2014/01/27 职场文书
腾讯广告词
2014/03/19 职场文书
反腐倡廉剖析材料
2014/09/30 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
阳光体育运动标语口号
2015/12/26 职场文书
python实现双链表
2022/05/25 Python