你必须知道的Javascript知识点之"字面量和对应类型"说明介绍

 更新时间:2013年04月23日 10:14:29   作者:  
本篇文章小编为大家介绍,你必须知道的Javascript知识点之"字面量和对应类型"。需要的朋友参考下

代码示例:

复制代码 代码如下:

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

图片示意

规则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

图片示意

值类型的内存格局

代码示例

1 var num1 = 1;2 var num2 = 1;

图片示意

相关文章

  • js 学习笔记(三)

    js 学习笔记(三)

    JavaScript的对象基础 本篇主要讲解本地对象Array的各种方法。
    2009-12-12
  • 200行代码实现blockchain 区块链实例详解

    200行代码实现blockchain 区块链实例详解

    这篇文章主要介绍了200行代码实现blockchain 区块链的相关知识,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2018-03-03
  • javascript 就地编辑实现代码

    javascript 就地编辑实现代码

    最近正在看《javascript设计模式》,其中有一个'就地编辑'的示例,用来表现不同的继承方式,看完之后想自己凭理解写一个类似的东西。
    2010-05-05
  • JS中的算法与数据结构之栈(Stack)实例详解

    JS中的算法与数据结构之栈(Stack)实例详解

    这篇文章主要介绍了JS中的算法与数据结构之栈(Stack),结合实例形式详细分析了js中栈的概念、原理、定义及常见使用方法,需要的朋友可以参考下
    2019-08-08
  • JavaScript DOM节点操作方法总结

    JavaScript DOM节点操作方法总结

    下面小编就为大家带来一篇JavaScript DOM节点操作方法总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • JavaScript自动内存管理与垃圾回收策略详细分析讲解

    JavaScript自动内存管理与垃圾回收策略详细分析讲解

    JS的垃圾回收机制是为了以防内存泄漏,内存泄漏的含义就是当已经不需要某块内存时这块内存还存在着,垃圾回收机制就是间歇的不定期的寻找到不再使用的变量,并释放掉它们所指向的内存。因为内存的大小是有限的,所以当内存不再需要的时候,我们需要对其进行释放
    2023-01-01
  • 原生JS与CSS实现软件卸载对话框功能

    原生JS与CSS实现软件卸载对话框功能

    今天给大家分享一个特别有意思的软件卸载对话框功能,本段代码是基于js 与css实现的,感兴趣的朋友跟随小编一起看看吧
    2019-12-12
  • JavaScript实现多维数组的方法

    JavaScript实现多维数组的方法

    这篇文章主要介绍了JavaScript实现多维数组的方法,有需要的朋友可以参考一下
    2013-11-11
  • 微信小程序实现的图片保存功能示例

    微信小程序实现的图片保存功能示例

    这篇文章主要介绍了微信小程序实现的图片保存功能,结合实例形式分析了微信小程序wx.downloadFile({})及wx.saveImageToPhotosAlbum({})函数图片保存功能相关使用技巧,需要的朋友可以参考下
    2019-04-04
  • JavaScript使用cookie

    JavaScript使用cookie

    JavaScript使用cookie...
    2007-02-02

最新评论