title: 1. 从新认识 JavaScript 类型
date: 2019-03-27 11:12:47 +0800
tags: [JavaScript数据类型]
categories: 重学前端系列笔记javascript
最新在看witter大神的专栏《重学前端》,感慨颇多,收益也颇多。以为本身该重建一下前端的知识体系,因此跟着写下这个笔记。
前端
let a
是属于变量声明阶段,这个阶段全部的变量的值都是 undefined
。a = 12
JS
** 解析引擎。这个变量是什么类型以及它的值多少。JavaScript
执行的时候,若是遇到致命错误便会中止往下执行。//bad声明方式 var a=b=2; // good var a=12,b=23; // 可是更指望使用let声明,不用变量提高 let a = 12;
let str = "你是谁,我是望风披靡的孙悟空" Object.prototype.toString.call(str) // [object,String]; let arr = [1,4,56]; Object.prototype.toString.call(arr) // [object,Array];
如今JavaScript常见类型是这么多,其中只有 Symbol
是 ES6
新提出来的,其他都是 ES6
以前早就熟悉的类
java
JavaScript
语言公认的设计失误之一,因此,因此,咱们为了不无心中被篡改,我建议使用 void 0
来来获取 Nudefined
值。Null
的不一样就是,Null
是 JavaScript
的关键字,在开发中能够自由的获取 Null
类型的变量true
和 false
JavaScript
中的内置对象,能够经过 new
关键词创造实例对象2^53-1
,String
并不是文本意义的字符串,而是字符串的 UTF16
编码,咱们平常操做字符使用的 length
charAt
都是针对 UTF16
编码UTF16
编码以后的字符长度限制Note:现行的字符集国际标准,字符是以 Unicode 的方式表示的,每个 Unicode 的码点表示一个字符,理论上,Unicode 的范围是无限的。UTF 是 Unicode 的编码方式,规定了码点在计算机中的表示方法,常见的有 UTF16 和 UTF8。 Unicode 的码点一般用 U+??? 来表示,其中 ??? 是十六进制的码点值。 0-65536(U+0000 - U+FFFF)的码点被称为基本字符区域(BMP)。
JavaScript
的内置对象,能够经过 new
关键字创造实例**2^64-2^53+3**
个值NaN
(这个能够用来检测是否为数字类型)、Infinity(正无穷大)、-Infinity(负无穷大)console.log(.00001 / -0); //结果:-Infinity console.log(.00000000001 / 0); //结果: Infinity
==
或者 ===
进行比较的console.log( .1 + .2 == .3 ); //结果:false; console.log(.1 + .2); // 结果:0.30000000000000004
console.log(Math.abs(.1 + .2 - .3) <=Number.EPSILON); // true
Number.EPSILONES6 Number 的一个常量。
Number.EPSILON 其实是 JavaScript 可以表示的最小精度。偏差若是小于这个值,就能够认为已经没有意义了,即不存在偏差了。
key-value
结构**ES6**
新增的一个类型。其实说实话,到如今还不太清楚这个类型的做用,以及用法// 建立 Symbol 类型 let symbol = Symbol("其实,我是一个好人"); console.log(symbol)
JavaScript
中的内置方法进行转换,例如 **parseInt**
**parseFloat**
都是将字符串转化成数值类型。可是 **parseInt**
是遇到非数值就停下,而 **parseFloat**
遇到不属于数字行列才会停,**parseInt**
**parseFloat**
转化的字符串,若是第一个字符不是数字的话,就会返回 NaN JavaScript
Math NaN Number
NaN**console.log(parseInt("6340.54")); // 结果:6340 console.log(parseFloat("4.648781655wr我是1"));结果:4.648781655 console.log(Number("2.2.22")); // 结果:NaN console.log(Number("5464646")) // 结果: 5464646
let str = 121343454545; str = str+ ""; console.log(typeof(str)) // 结果:string
let str = 13243545646; console.log( typeof( String(str) ) ) // 结果:string
**JavaScript**
中,类型之间存在装箱转换操做let str = 1323; console.log(typeof (String(str))); // string console.log(typeof (Symbol(str))) // symbol
List
和 Record
: 用于描述函数传参过程。**Set**
:主要用于解释字符集等。Completion Record
:用于描述异常、跳出等语句执行过程。Reference
:用于描述对象属性访问、delete 等。Property Descriptor
:用于描述对象的属性。Lexical Environment
和 Environment Record
:用于描述变量和做用域。Data Block
:用于描述二进制数据。始发于算法