wdnmd

面试(JS篇)

1.js基本类型

Boolean,Number,String,Null,Undefined,Symbol.

2.null非对象,但是typeof null 返回的是Object,原因遗留下来的一个bug,000开头是对象,而null是000

3.原始类型存储的是值,而对象存储的是地址(指针),函数参数为对象,函数传参是传递对象的指针副本

const a = []
const b = a
p.push(1)
a = [1]
// a,b都代表地址,一个改变都改变

4.typeof

Number,String,Boolean,Function可,

Array,Object,Null不可

5.instanceof(得对象)

6.Object.prototype.toString.call()啥都可以

7.类型转化  下面的=是转换为的意思,并非赋值

Boolean

Number,  0,-0,NaN=false,  其他都是true

String    ' ' = false       其他都是true

undefined unll  false

引用类型    ture

 

String

Number  5='5'

Boolean.函数,symbol,string    'true'

数组    [1,2]=‘1,2’

对象    ‘[object Object]’  

 

Number

String  '1'=1  'a'=NaN

数组   空数组=0,只有一个元素的数组[5]=5 其他NaN

null    null=0

出数组外的引用类型  NaN

symbol   抛错

8.四则运算 一方为字符串String,把另外一方转为String

  一方不是String Or Number,则转为

除加法外,一方是Number,另一方转为Number

 

对象转化为原始类型,调用[[ToPrimitive]]

let a = {valueOf(){return 0 }, toString(){return'1'}}

字符串调用toString,非字符串用valueOf

9.bind,call,apply改变this的指向,

区别,call bind接受的是参数列表,apply接受的是数组

bind返回的是方法()需要调用

10.this的指向问题

(1)普通函数,指向window

(2)构造函数中的this,指向当前构造函数所创建的对象

(3)方法中的this,指向方法所属的对象

(4)事件处理函数中的this,指向事件源,谁调用指谁

function foo(){
    console.log(this.a)
}
var a = 1;
foo()//window
const obj = {a:2,foo:foo}
obj.foo//obj
const c = new foo()//c

11.箭头函数没有this,取决于包裹的第一个普通函数,多次bind由第一次决定

12.==。===的区别

判断x==y,首先判断x,y类型相同与否,相同则判断x===y,不同则

 

posted @ 2020-04-22 18:58  FreshChick  阅读(173)  评论(0)    收藏  举报