前端面试基础

数据类型
什么是引用类型,值类型?

    值类型key与value存储在栈中(量小)
    引用类型在栈存储的引用地址,在堆中存储是数据(量大)
    把引用类型赋值给一个变量,是吧变量的引用地址指向引用类型堆中地址

值类型

String字符,Number数字,Boolean布尔,undefined未定义  null空(特殊) Symbol符号

引用类型

Object对象 Array数字 Function 函数 Map图  Set集合

   

判断数据类型

    typeof 类型
    instanceof  实例
    constructor 构造函数
    Array.isArray() 是否为数组
    Object.prototype.toString.call(obj) 原型

type of

typeof  “abc”      string
typeof   123       number
typeof   true      boolean
typeof   undefined  undefined
typeof  null        object
typeof  Symbol()  symbol
typeof   {}    object
typeof   []     object
typeof   function(){}    function
typeof new Map()     object
typeof  new Set()      object
适合判断 值了与引用类型 不能判断具体引用类型

 

instance of

[] instanceof Array    true
[] instanceof Object  true
{} instanceof Array  false
{} instanceof  Object  true
判断是否是其原型链上的实例 只要这个构造函数在原型链都返回true
([]  由Array创建的,Array是 Object的子类, instanceof  Array和 Object 都返回true)

construtor

判断实例对象构造函数
[].constructor === Array     true

最精确

Object.prototype.toString.call(obj).slice(8,-1)
返回数据的精确类型

浅拷贝

扩展{...obj}
for遍历
Object.assgin()

深拷贝

1. JSON.parse(JSON.stringify(数据))
json数据类只支持 布尔,字符串,数字 null,undefined  array object
会忽略函数 等其他类型数据
2. 通过判断类型 递归深拷贝
递归就是函数调用自己,一定要有结束条件

隐式转换
看符号

+ 字符串连接符号  会尝试把其他类型转换为 字符串
+ - * /  == 会尝试把其他类型转换为数字
    转换失败 NaN
    false 转换为 0
    true 转换 1
><>= <=  ! !=  ==  判断与逻辑返回会尝试把其他类型转换布尔值
    falsely变量转换为false
    “” null NaN undefined 0 转换为false

 

严格等于

===
    判断类型和值是否都相对
应该在任何时候都使用===
(当判断是否为null或者为undefined可以为特例)
null ===  null  true

等于

==
    判断隐式转换后的值
    “100” == 100  // true
    null == undefined  //true
    0 == false  //true
    特例:NaN === null  // false
{} == {} // false
[] == {} //false
指向不同的内存地址

 

if判断

if()中判断的是否为truely变量
falsely变量:false  “”   0 NaN undefined null
两次取反 !!a得到结果为false
除了falsely变量其他都为truely变量

  

逻辑且逻辑或

A||B
    A为真(truely) 结果为A ,否则结果为B
A&&B
    A为假(falsely) 结果为A,否则结果为B
判断对象
    if(a&&a.b&&a.b.c){}
    if(a?.b?.c){}
    如果有a并且有a.b并且有a.b.c
    if(a.b.c){}

   

原型与原型链

前端面试基础_第1张图片

 

你可能感兴趣的:(前端,面试,javascript)