首发我的个人博客:www.zhuxinyong.com
其次是掘金:https://juejin.cn/user/2225067264058798
原文地址:https://dev.to/bhagatparwinder/types-in-javascript-2go1
任何时候,你的值可以存储在一个变量里或者传递给一个函数,这些值在 JavaScript 中有 7 种类型。下面来一一介绍:
`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
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
比如出现的用 true 表示,未出现的用 false 表示。Boolean 值一般作为比较运算的结果,例如:isAge > 19 根据年龄输出 true 或 false。
当我们谈到比较或者 boolean 时,一般都会介绍 == 和 **====**:
console.log(10 == "10"); // true
console.log(10 === "10") // false
== 只做值的比较而 === 还做类型的比较。
在 JavaScript 中有两种方法标识“空”,null 和 undefined。Null 是我们有一个变量并且我们给它赋值了一个 null -- 我们显式的给变量赋了空:
let dog = null;
console.log(dog); // null
有趣的是,null 在 JavaScript 中的类型是对象。
在 JavaScript 中表示空,例如声明一个变量但不赋值,它的结果就是 undefined:
let dog;
console.log(dog); // undefined
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..in 和 Object.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']
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