JavaScript教程 / 全部 / 前端 / 技术 · 2022年4月10日 0

3 – JavaScript 中的数据类型

原文地址:https://dev.to/bhagatparwinder/types-in-javascript-2go1

任何时候,你的值可以存储在一个变量里或者传递给一个函数,这些值在 JavaScript 中有 7 种类型。下面来一一介绍:

String(通常用于文本)

   `Mary` is a string surrounded by backticks
   'John' is a string surrounded by single quotes
   "Parwinder" is a string surrounded by double quotes

上面三个例子都是合法的字符串,使用反引号的优势是允许你创造多行的字符串。例如:

   `This is an
   example of
   a multi
   line string`

反引号更酷的功能是允许你在字符串中执行表达式。也就是字符串连接动态值时不需要加号运算符:

const name = "Parwinder";
   console.log(`Hello my name is ${name}`); // Hello my name is Parwinder

Number(带或者不带小数统称 numbers)

Numbers 是不带引号的,JavaScript 提供了许多帮助方法,下面是一些 Math 的方法:

   Math.round(20.5) => 21
   Math.round(20.1) => 20
   Math.floor(20.7) => 20
   Math.ceil(20.1) => 21
   Math.random => 0.454646447863 // A random number between 0 and 1

一个 JavaScript 中常见的关于数值相加的面试问题:

console.log(0.1 + 0.2) // 0.30000000000000004

是的,结果就是 0.30000000000000004 而不是 0.3。这是因为浏览器执行了浮点数值运算,从这个链接来更深入的了解。

另外,NaN 是一个数值类型的特殊值代表非数值类型。当你用一个数值除以字符串时:

console.log(12/'a') // NaN

Boolean(用来代表 true 或 false)

比如出现的用 true 表示,未出现的用 false 表示。Boolean 值一般作为比较运算的结果,例如:isAge > 19 根据年龄输出 true 或 false。

当我们谈到比较或者 boolean 时,一般都会介绍 ======

   console.log(10 == "10"); // true
   console.log(10 === "10") // false

== 只做值的比较而 === 还做类型的比较。

Null

在 JavaScript 中有两种方法标识“空”,null 和 undefined。Null 是我们有一个变量并且我们给它赋值了一个 null — 我们显式的给变量赋了空:

   let dog = null;
   console.log(dog); // null

有趣的是,null 在 JavaScript 中的类型是对象。

Undefined

在 JavaScript 中表示空,例如声明一个变量但不赋值,它的结果就是 undefined:

   let dog;
   console.log(dog); // undefined

Symbol

JavaScript 新添加的一个数据类型,它用来获得一个唯一的标识。每一个从 Symbol() 返回的值都是唯一的,它一般用来作为对象属性的唯一标识。传递给 Symbol() 的参数只用于标识,一般用于调试使用。就算值相同 Symbol() 返回的结果也不同:

let id1 = Symbol("id");
let id2 = Symbol("id");

alert(id1 == id2); // false

对象字面量添加 Symbol() 返回的标识:

let id = Symbol("id");

let user = {
  name: "John",
  [id]: 123 // not "id": 123
};

一定要加中括号,是为了和字符串 ‘id’ 的区分,另外 for..inObject.keys() 会忽略它:

let id = Symbol("id");
let user = {
  name: "John",
  age: 30,
  [id]: 123
};

for (let key in user) alert(key); // name, age (no symbols)

// the direct access by the symbol works
alert( "Direct: " + user[id] );

Object.keys(user) // ['name','age']

Object

JavaScript 中一切皆对象,对象字面量一般表示数据的集合。

   const person = {
       first: "Parwinder",
       last: "Bhagat",
       age: 33
   }

   console.log(person.first); // Parwinder
   console.log(person.first); // Bhagat
   console.log(person.age); // 33
   console.log(person.income); // undefined