JS面试题(一)

简介: JS面试题(一)

1. 如何判断一个对象是否属于某个类


使用 instanceof 即if(a instanceof Person) {alert(‘yes’)} 【in stæns]】


2. 对JSON的了解


一种轻量级的数据交换格式.


类似于xml。数据格式简单,易于读写,占用宽带小.


JSON的值是键值对的形式(key: value).


两个函数:


JSON.parse(str) // 解析JSON字符串变成js值或对象
JSON.stringify(obj) // 将一个js值(对象或者数组)转换为一个JSON字符串


3. JS中如何将页面重定向到另一个页面?


使用 window.location.replace(url)
window.location.replace(" https://www.onlineinterviewquestions.com/");


4.JS中的深拷贝与浅拷贝的区别?


在深拷贝中,新对象中的更改不会影响原始对象,


方法:JSON.parse(JSON.stringify(obj)),


弊端是:NaN, undefined,function这些会出现问题。


深拷贝新旧对象:指针指向不同的内存地址


而在浅拷贝中,新对象中的更改,原始对象中也会跟着改。


使用object.assign('原始对象','新对象') 进行浅拷贝


浅拷贝是复制另一个对象的内存地址


7. 解释一下什么是箭头函数?


在es6中有了箭头函数。


箭头函数不能用作构造函数,也不支持this,


arguments,super


8. encodeURI()


encodeURI() 函数可以对URL进行编码。
【它将url作为参数并返回编码的字符串】
var uri = "my profile.php?name=sammer";
var encoded_uri = encodeURI(uri);


8.0 decodeURI()


decodeURI()函数用于解码js中的URL。
var uri = "my profile.php?name=sammer";
var encoded_uri = encodeURI(uri);
decodeURI(encoded_uri);
encodeURI()编码 嗯往下按【编码】
decodeURI()解码


9.有哪些内置对象?


有6个


Function、Arguments、Math、Date、RegExp(正则表达式)、Error


10 DOM怎样添加、移除、移动、复制、创建和查找节点 ???


// 创建新节点
createDocumentFragment() //创建一个DOM片段
createElement() //创建一个具体的元素
createTextNode() //创建一个文本节点
// 添加、移除、替换、插入
appendChild()
removeChild()
replaceChild()
insertBefore() //在已有的【子节点前】插入一个新的子节点


11.null和undefined的区别?


1. null表示一个尚未存在的对象。


1. undefined 定义了变量但是没有赋值。


2. ECMAScript 认为undefined是unll派生出来的。


他们的值是一样的,但是类型却是不一样的。


null==undefined (ok)  null === undefined (err)  


3 null转为数值时为0


 undefined转为数值时为NaN


NaN是一个非数字类型的number类型。


NaN==NaN(ok)  NaN===NaN(ok)


12. 什么情况下会出现 undefined。


(1)变量被声明了但没有赋值时,就等于undefined。


(2) 调用函数时,该提供的参数没有提供,该参数等于undefined。


(3)对象没有该属性的时候,该属性的值为 undefined。


(4)函数没有返回值时,默认返回undefined。


function fn2(){
  var per = 'xxxx';
  //无返回值
}
var b = fn2();
console.log(b); //出现 undefined

将函数赋值给一个变量,然后输出这个变量就是undefined  


13.什么是跨域?


协议, 域名, 端口号, 不同就是不同的域。


不同的域之间相互请求资源,就叫“跨域”。


ps:https与http也是不同的域


浏览器基于:“同源策略”


认为跨域请求是不安全的 所以拒绝访问。(浏览器把响应的数据拦截了)


14.解决跨域的方式


1)后端代理。


2)JSONP(利用script标签的src属性跨域 只是支持get方式 不支持post方式 且 需要后端支持)


3)设置响应头(cros) (后端) (推荐)

res.header("Access-Control-Allow-Origin", "*");  // 允许访问的域 * 代表左右
res.header("Access-Control-Allow-Headers", "需要携带的请求头"); // 允许携带的请求头

15.判断数组的方式有哪些 (5种)


1.通过原型链做判断


(目标源arr).__proto__ === Array.prototype;


2.通过ES6的Array.isArray()做判断


Array.isArrray(目标源arr); 【əˈreɪ]】


3.通过instanceof做判断


arr instanceof Array


4.通过Array.prototype.isPrototypeOf


Array.prototype.isPrototypeOf(arr) true


5.通过Object.prototype.toString.call()做判断


Object.prototype.toString.call(arr).slice(8,-1) === 'Array';


Object.prototype.toString.call(arr)==="[object Array]"


明天继续============



相关文章
|
JSON JavaScript 前端开发
Javascript基础 86个面试题汇总 (附答案)
该文章汇总了JavaScript的基础面试题及其答案,涵盖了JavaScript的核心概念、特性以及常见的面试问题。
483 3
|
8月前
|
自然语言处理 JavaScript 前端开发
当面试官再问我JS闭包时,我能答出来的都在这里了。
闭包(Closure)是前端面试中的高频考点,广泛应用于函数式编程中。它不仅指函数内部定义的函数,还涉及内存管理、作用域链和垃圾回收机制。闭包可以让函数访问其外部作用域的变量,但也可能引发内存泄漏等问题。通过合理使用闭包,可以实现模块化、高阶函数和回调函数等应用场景。然而,滥用闭包可能导致代码复杂度增加、调试困难以及潜在的性能问题。为了避免这些问题,开发时应谨慎处理闭包,避免不必要的嵌套,并及时清理不再使用的变量和监听器。
331 16
当面试官再问我JS闭包时,我能答出来的都在这里了。
|
前端开发 JavaScript
JavaScript 面试系列:如何理解 ES6 中 Generator ?常用使用场景有哪些?
JavaScript 面试系列:如何理解 ES6 中 Generator ?常用使用场景有哪些?
|
JavaScript 前端开发
常见的JS面试题
【8月更文挑战第5天】 常见的JS面试题
166 3
|
存储 JavaScript 前端开发
2022年前端js面试题
2022年前端js面试题
240 57
|
12月前
|
Web App开发 JavaScript 前端开发
前端Node.js面试题
前端Node.js面试题
|
JavaScript 前端开发 程序员
JS小白请看!一招让你的面试成功率大大提高——规范代码
JS小白请看!一招让你的面试成功率大大提高——规范代码
|
JavaScript 前端开发 UED
小白请看! 大厂面试题 :如何用JS实现瀑布流
小白请看! 大厂面试题 :如何用JS实现瀑布流
|
存储 JavaScript 前端开发
JS浅拷贝及面试时手写源码
JS浅拷贝及面试时手写源码
|
JavaScript 前端开发
JS:类型转换(四)从底层逻辑让你搞懂经典面试问题 [ ] == ![ ] ?
JS:类型转换(四)从底层逻辑让你搞懂经典面试问题 [ ] == ![ ] ?