1. 重新认识 JavaScript 范例

title: 1. 重新认识 JavaScript 范例
date: 2019-03-27 11:12:47 +0800
tags: [JavaScript数据范例]
categories: 重学前端系列笔记

媒介

最新在看witter大神的专栏《重学前端》,慨叹颇多,收益也颇多。以为本身该重修一下前端的学问系统,所以随着写下这个笔记。

补充*

  • 变量声明跟赋值,是两个观点。
  • let a 是属于变量声明阶段,这个阶段统统的变量的值都是 undefined 。a = 12JS** 剖析引擎。这个变量是什么范例以及它的值若干。
  • 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现有罕见范例

  • Null
  • Undefined
  • String
  • Boolean
  • Number
  • Symbol
  • Object

如今JavaScript罕见范例是这么多,个中只要 Symbol  是 ES6 新提出来的,其他都是 ES6 之前早就熟习的类

(0)Null

  • 这个范例示意:定义了然则为空
  • Null 范例也只要一个值,就是 null,它的语义示意空值,与 undefined 差别,null 是 JavaScript 关键字,所以在任何代码中,你都可以宁神用 null 关键字来猎取 null 值。

(1)Undefined

  • 这个范例示意:变量定义了然则未赋值
  • 任何变量在赋值前是 Undefined 范例、值为 undefined,平常我们可以用全局变量 undefined(就是名为 undefined 的这个变量)来表达这个值
  • 它一样的示意一个变量的值,它并不是一个关键词,这是 JavaScript  言语公认的设想失误之一,所以,所以,我们为了防止无意中被改动,我发起运用 void 0 来来猎取 Nudefined 值。
  • 它与 Null 的差别就是,Null 是 JavaScript 的关键字,在开辟中可以自在的猎取 Null 范例的变量

(2)Boolean

  • 这个范例示意:逻辑上的真和假
  • 它有两个值:true 和 false 
  • 它属于 JavaScript 中的内置对象,可以经由历程 new 关键词制造实例对象

(3)String

  • 这个范例示意:示意文本数据
  • 这个范例具有长度单元的,最大的长度 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)。

(4)Number

  • 这个范例示意:一般意义的数字范例
  • 它是 JavaScript 的内置对象,可以经由历程 new 关键字制造实例
  • 它范例有 **2^64-2^53+3** 个值
  • 在为了防止盘算的时刻失足,自创生涯中的数学,引入了 NaN (这个可以用来检测是不是为数字范例)、Infinity(正无穷大)、-Infinity(负无穷大)
  • 在加减法中 -0+0 **没有很大的区分,然则在除法中就会很大的区分了
console.log(.00001 / -0); //效果:-Infinity
console.log(.00000000001 / 0); //效果: Infinity
  • 依据双精度浮点数的定义,Number 范例中有用的整数局限是-0x1fffffffffffff 至0x1fffffffffffff,所以 Number 没法准确示意此局限外的整数。所以在非整数眼前是没法运用 == 或许 === 举行比较的
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 可以示意的最小精度。偏差假如小于这个值,就可以以为已没有意义了,即不存在偏差了。

(5)Object

  • 这个范例示意:对象,它是统统有形和无形物体的总称
  • 它是属性的鸠合,是 key-value 构造
  • key : 可所以字符串范例。也可所以symbol范例
  • value :可所以字符串,可所以数值范例。也可所以对象范例

(6)Symbol

  • 这个范例是 **ES6** 新增的一个范例。实在说实话,到如今还不太清晰这个范例的作用,以及用法
  • 它是统统非字符串的对象 key 的鸠合
  • Symbol 可以具有字符串范例的形貌,然则纵然形貌雷同,Symbol 也不相称
// 建立 Symbol 范例
let symbol = Symbol("实在,我是一个大好人");
console.log(symbol)
  • 这个范例照样有许多不懂,以后有了新收成,再过来更新吧

范例转换

(0)string → Number(字符串转成数值范例)

  • 罕见都是借助 JavaScript 中的内置要领举行转换,比方 **parseInt**  **parseFloat** 都是将字符串转化成数值范例。然则  **parseInt** 是碰到非数值就停下,而  **parseFloat** 碰到不属于数字行列才会停,
  • **parseInt** **parseFloat**  转化的字符串,假如第一个字符不是数字的话,就会返回 NaN
  • 除了上述的两种,另有 JavaScriptMath  NaN 
  • 另有一种就是应用装箱操纵,应用 NumberNaN**
  • 假如字符串的字符都是数字。那末可以运用四则运算,也可以举行山人转换
 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

(1)Number → string (数字转化成字符串)

  • 字符串拼接
let str = 121343454545;
str = str+ "";
console.log(typeof(str)) // 效果:string
  • 装箱转换
let str = 13243545646;
console.log( typeof( String(str) ) ) // 效果:string 

(2)装箱操纵转换

  • **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 :用于形貌二进制数据。

顺序 = 算法 + 数据构造

始发于

    原文作者:无心
    原文地址: https://segmentfault.com/a/1190000019395388
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞