zhaobinglong / myBlog

https://zhaobinglong.github.io/myBlog/
MIT License
7 stars 0 forks source link

js概念之基础数据 #64

Open zhaobinglong opened 4 years ago

zhaobinglong commented 4 years ago

js中的6种数据类型

  1. String
  2. Number
  3. Undefined, 只有一个值。使用var声明了变量,但未给变量初始化值,那么这个变量的值就是undefined。
  4. Boolean, true和false
  5. Null
  6. Object
  7. Symbol(ES6新增,可用来当vue循环中的key)

两种类型(按照存储方式区分)

  1. 五种基本数据类型
  2. 一种引用数据类型
zhaobinglong commented 4 years ago

预留

zhaobinglong commented 4 years ago

判断数据类型

方法一:typeof

typeof '123'

方法二:instanceof

判断对象和构造函数在原型链上是否有关系,如果有关系,返回真,否则返回假

    var str = 'hello';
    alert(str instanceof String);//false
    var bool = true;
    alert(bool instanceof Boolean);//false
    var num = 123;
    alert(num instanceof Number);//false
    var nul = null;
    alert(nul instanceof Object);//false
    var und = undefined;
    alert(und instanceof Object);//false
    var oDate = new Date();
    alert(oDate instanceof Date);//true
    var json = {};
    alert(json instanceof Object);//true
    var arr = [];
    alert(arr instanceof Array);//true
    var reg = /a/;
    alert(reg instanceof RegExp);//true
    var fun = function(){};
    alert(fun instanceof Function);//true
    var error = new Error();
    alert(error instanceof Error);//true

方法三:constructor

查看对象对应的构造函数

方法四:Object.prototype.toString.call

参考

https://blog.csdn.net/lhjuejiang/article/details/79623973

zhaobinglong commented 4 years ago

手写代码之instanceof

a instanceof B,检测a的原型链(proto)上是否有B.prototype,若有返回true,否则false。

function instance_of(L, R) {//L 表示左表达式,R 表示右表达式 

    var O = R.prototype;   // 取 R 的显示原型 

    L = L.__proto__;  // 取 L 的隐式原型

    while (true) {    

        if (L === null)      

             return false;   

        if (O === L)  // 当 O 显式原型 严格等于  L隐式原型 时,返回true

             return true;   

        L = L.__proto__;  

    }

}
zhaobinglong commented 3 years ago

暂时性死区(temporal dead zone)

在代码块内,使用let、const命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。

typeof x; // ReferenceError, 会提示没有定义
let x;