栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

js面试题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

js面试题

1、js 数据类型有哪些?
js 数据类型⼀共有 8 种,分为两⼤类:基本类型和引⽤类型。
它们的数据类型分别为:
基本类型:string、number、boolean、null、undefined、symbol、bigint
引⽤类型:object

2、null 和 undefined 的区别。
null 和 undefined 两个都表⽰⽆的值。
作者设计 js 的时候,借鉴的 java 语⾔先设计的 null 。null 使⽤的时候会被隐式转化成 0,不容易发现错误。
console.log( number(null) ) //0
undefined 是为了填补 null 的坑。所以后来⼜新增了 undefined 。
console.log( number(undefined) ) //NaN
3、new 操作符具体做了什么?
创建了⼀个空对象。
将空对象的原型指向于构造函数的原型。
将空对象作为构造函数的上下⽂。
对构造函数有返回值的处理判断。
实现 new 操作符的⽅法:
function create( fn,...args ){
var obj={}
 Object.setPrototypeOf( obj,fn.prototype )
var resault = fn.apply(obj,args)
return (resault instanceof Object) ? result : obj
}


4、== 和 === 有什么不同?
== ⽐较的是值,=== 除了⽐较值,还⽐较类型。
console.log( [1,2]=='1,2'  )       // true
console.log( [1,2] === '1,2'  )  //false
valueOf ⽅法返回 Math 对象的原始值,通常由 javascript 在后台⾃动调⽤,并不显⽰的出现在代码中。
console.log([1,2].valueOf()) //[1,2]
console.log('1,2'.valueOf()) //[1,2]
// 所以
console.log( [1,2]=='1,2'  )  // true
不管是字符串和数字⽐较,还是布尔值和数字⽐较,都会使⽤ valueOf 隐式转换。
总结:== 需要使⽤ valueOf() 进⾏隐式转换,所以性能差。 === 会避开⼀些不必要的⿇烦。
 

5、this 的指向

var name = 'window name'
var p1 = {
 name:'p1 name',
 showName:function(){
  console.info(this.name)
 }
}
var fn = p1.showName
fn()
p1.showName()
var p2 = {
 name:'p2 name',
 showName:function(fun){
  fun()
 }
}
p2.showName(p1.showName)
p2.showName = p1.showName
p2.showName()

这是⼀道关于 this 指向的⾯试题,接下来我们就说说 this 是如何指向的?
this 对象是运⾏时基于函数的执⾏环境绑定的:

在全局函数中,this 等于 window 。
函数上下⽂调⽤,严格模式下 this 为 undefined ,⾮严格模式下,this 指向 window 。
当函数被作为某个对象的⽅法被调⽤时,this 等于那个对象。如果使⽤ call apply 改变当前 this 时,将会指向为传递过来的那个 this 。
匿名函数的执⾏环境具有全局性,因此 this 指向 window。
构造函数内的 this 指向创建的实例对象。
dom 事件处理函数,this 指向触发该事件的元素。
setTimeout 和 setInterval 中的 this 指向全局变量 window
 

6、let、var 和 const 的区别

let/const 声明并不会被提升到当前代码块的顶部,因此你需要手动将 let/const 声明放置到顶部,
以便让变量在整个代码块内部可用。
块级作用域:1、在一个函数内部;2、在一个代码块(由一对花括号包裹)内部
禁止重复声明
var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。
let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。

7、同源策略
同源策略是浏览器最核心也最基本的安全功能,是禁止浏览器跨域请求数据,目的是保护信息安全。
域名、协议、端口号

8、GET 和 POST 的区别

1、get请求是获取数据的,而post请求是提交数据的。
2、get请求能被缓存,post请求不能被缓存
3、get请求对数据长度的限制;当发送数据时,GET 方法向 URL 添加数据get请求的传送数据会拼接在url后面
4、GET在浏览器回退时是无害的,而POST会再次提交请求。
5、GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
6、GET参数通过URL传递,POST放在Request body中。

9、

说说Javascript中的继承,如何实现继承?
继承是什么:

继承(inheritance)是面向对象软件技术当中的一个概念;如果一个类别B“继承自”另一个类别A,就把这个B称为“A的子类”,而把A称为“B的父类别”也可以称“A是B的超类”;

继承可以使得子类具有父类别的各种属性和方法,而不需要再次编写相同的代码
在子类别继承父类别的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类别的原有属性和方法,使其获得与父类别不同的功能
实现继承的方法:

原型链继承
构造函数继承(借助 call)
组合继承
原型式继承
寄生式继承
寄生组合式继承
 

10、Javascript数组常见的方法有哪些?
操作方法:

增:push()、unshift()、splice()、concat()
删:pop()、shift()、splice()、slice()
改:splice()
查:indexOf()、includes()、find()
排序方法:

数组本身有两个方法:reverse()、sort()
定义排序函数:冒泡排序、插入排序、递并排序、计数排序
转换方法:

  • join()

迭代方法:

  • some()
  • every()
  • forEach()
  • filter()
  • map()

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/996121.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号