ICode9

精准搜索请尝试: 精确搜索
首页?>?bet356体育下载> 文章详细

JavaScript原始类型和相应的对象

2019-09-30 10:36:21??阅读:8??来源: 互联网

标签:javascript?primitive-types


JavaScript中,并非每个数据都是对象.存在一些原始类型,如字符串,数字和布尔值,它们不是对象.对于这些类型中的每一种,都存在一个构造函数,它输出具有类似行为的对象:Number,String和Boolean.为了混淆问题,实际上可以在原始类型上调用方法 – 它们将在此操作期间转换为相应的对象,然后转换回来.例如,人们可以做到

var a = 4.1324;
a.toFixed(1) // Outputs 4.1

然而,如果您尝试将原始类型和对象与严格相等进行比较,则会出现差异

var a = new Number(4);
var b = 4;
a === b; // False!!!
typeof a; // 'object'
typeof b; // 'number'

实际上,一个人试图比较对象,但结果却是不同的:

var a = new Number(4);
var b = new Number(4);
a === b; // False!!!

(从概念的角度来看,我有点理解这种区别.对象可以有其他属性,因此它们不应该相等,除非它们实际上是相同的.所以如果我们想要4 === 4我们需要使用类型不是一个对象.但任何充分动态的编程语言都面临着这种困境,但JavaScript是我所知道的唯一一种有两种类型 – 一种是对象的而一种不是 – 用于数字或字符串.)

bet356体育下载What is the advantage of keeping two separate representations for numbers, strings and Booleans? In what context could one need the distinction between primitive types and objects?

解决方法:

What is the advantage of keeping two
separate representations for numbers,
strings and Booleans?

性能

In what context could one need the
distinction between primitive types
and objects?

想到了强制. 0 == false而新的Number(0)!= false

例如:

var a = new Boolean(false);
if(a) {
  // This code runs
}

var a = false;
if(a) {
  // This code never runs
}

你可以在这里阅读更多关于强制的信息:JavaScript Coercion Demystified



标签:javascript,primitive-types

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有