前端面试js2

面试题:延迟加载JS有哪些方式?

延迟加载:async、defer

例如:<script defer type="text/javascript" src=script.js'></script>

defer :等html全部解析完成,才会执行js代码,顺次执行js脚本。

async : async是和html解析同步的(一起的),不是顺次执行js脚本(谁先加载完谁先执行)。

面试题:JS数据类型有哪些?

基本类型:string、number、boolean、undefined、null、symbol、bigint

引用类型:object

NaN是一个数值类型,但是不是一个具体的数字。

console.log( true +1 );---1

console.log( 'name '+true );---2

console.log( undefined +1 );----nan

console.log( typeof undefined );----undefined

//字符串和其他类型相加,变成连接的形式

面试题:null和undefined的区别

  1. 作者在设计js的都是先设计的null(为什么设计了null:最初设计js的时候借鉴了java的语言)
  2. null会被隐式转换成0,很不容易发现错误。

3.先有null后有undefined,出来undefined是为了填补之前的坑。

JavaScript的最初版本是这样区分的: null是一个表示"无"的对象(空对象指针),转为数值时为0; undefined是一个表示"无"的原始值,转为数值时为NaN

console.log( Number( hull ) );-----nan

面试题:==和===有什么不同?

==: 比较的是值

string == number ll boolean ll number ... .都会隐式转换

通过valueOf转换(valueOf()方法通常由JavaScript在后台自动调用)

====:除了比较值,还比较类型

如果做这个重写---就不会都会隐式转换

0bject.prototype.value0f = function{alert(123);}

面试题︰JS作用域考题

1.除了函数外,js是没有块级作用域。

2.作用域链:内部可以访问外部的变量,但是外部不能访问内部的变量。

注意:如果内部有,优先查找到内部,如果内部没有就查找外部的。

3.注意声明变量是用var还是没有写(window . )

4.注意:js有变量提升的机制【变量悬挂声明】

5.优先级︰声明变量〉声明普通函数〉参数〉变量提升

面试的时候怎么看:

  1. 本层作用域有没有此变量【注意变量提升】
  2. 2.注意:js除了函数外没有块级作用域

3.普通声明函数是不看写函数的时候顺序

==10

--undifined

JS对象注意点︰ js对象考题

  1. 对象是通过new操作符构建出来的,所以对象之间不想等;(除引用外)
  2. 2.对象注意:引用类型;

3.对象的key都是字符串类型;

4.对象如何找属性|方法;│

先在对象本身找===>构造函数中找===>对象原型中找===>构造函数原型中找==>对象上一层原型查找

构造函数创建fun

 

 

 JS作用域+this指向+原型的考题

 

普通函数this指向widow

New 的this 指向new 对象

【JS】九、JS判断变量是不是数组,你能写出哪些方法?

 

Instanceof:不是很严谨。。 因为数组也是对象

方法三:prototype原型

var a= [1,2]
console.log(Object.prototype.toString.call(a).indexOf('Array')>-1)

 

Typeof---别写

面试题:slice是干嘛的、splice是否会改变原数组

1. slice是来截取的

参数可以写slice(3)、slice(1,3)、slice( -3)返回的是一个新的数组

2. splice功能有:插入、删除、替换返回:删除的元素(splice(指定下标,删除,插入元素))

该方法会改变原数组

el:arr = [‘1’,‘2’,‘3’,‘4’]

作用1:删除元素 — [item]为0

arr.splice(1,1) //[‘1’,‘3’,‘4’]

arr.splice(1,0) //[‘1’,‘2’,‘3’,‘4’]

arr.splice(1,2) //[‘1’,‘4’]

作用2:替换元素 — item为替换的值

arr.splice(1,1,‘x’) //[‘1’,‘x’,‘3’,‘4’] 替换起始下标为1,长度为1的值为x’

arr.splice(1,2,‘y’) //[‘1’,‘y’’,‘4’] 替换起始下标为1,长度为2的两个值为‘y’

arr.splice(1,2,‘x’,‘y’) //[‘1’,‘x’,‘y’,‘4’] 替换起始下标为1,长度为2的两个值

作用3:插入元素 — len设置为0,item为添加的值

arr.splice(1,0,‘x’) //[‘1’,‘x’,‘2’,‘3’,‘4’]

arr.splice(1,0, ‘x’, ‘y’, ‘z’) //[‘1’,‘x’, ‘y’, ‘z’,‘2’,‘3’,‘4’]

 

 

面试题:new操作符具体做了什么

1.创建了一个空的对象

2.将空对象的原型,指向于构造函数的原型

3.将空对象作为构造函数的上下文(改变this指向)

4.对构造函数有返回值的处理判断(如果是基本类型,忽略返回值;如果是引用类型,返回return  内容)

 

闭包面试

 

原型连

  1. 原型可以解决什么问题
  2. 对象共享属性和共享方法
  3. 2.谁有原型

函数拥有:prototype

对象拥有:_proto_

3.对象查找属性或者方法的顺序

先在对象本身查找 -->构造函数中查找-->对象的原型-->构造函数的原型中 --当前原型的原型中查找

4.原型链

4.1 是什么?︰

就是把原型串联起来

4.2原型链的最顶端是null

继承

1es6继承

 构造函数实现不了共享,

组合继承:实现了共享,解决了一些原型链存在的一些问题

 深拷贝

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝胖子20

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值