草庐IT

面试 个人摸底监测 考察JavaScript基础 (第三天)

六扇有伊人 2023-03-28 原文

01,如何开启JS严格模式?JS严格模式有什么特点?

两种方式

全局开启在js开头加上

'use strict'

局部开启,在作用域开头加上

function fn(){
  'use strict'
}

特点:

1,全局变量必须先声明

2,禁止使用with

3,创建eval作用域

有单独的作用域

4,禁止this指向window

5,函数参数不能重名

02、offsetHeight、scrollHeight、clientHeight有什么区别?

offsetHeight = boder + padding + content

clientWidth =  padding + content

scrollWidth = padding + 实际内容大小

注意:不要频繁的去获取offsetHeight等值,所有DOM操作都很费性能

scrollLeft 左边滚动距离 scrollTop 距离顶部的距离

offsetParent 找距离自己定位过的父级

获取元素距离页面顶部的距离?

offsetParent.scrollTop + xx.scrollTop  定位过得父级top 加上 自身距离父级的top

obj.getBoundingClientRect().top

03、HTMLCollection与NodeList区别?

HTMLCollection 是 Element 集合

    obj.children,只包含⼦元素

NodeList 是 Node 集合

    obj.childNodes,包含⽂本、注释、空格、换⾏

DOM是⼀棵树,所有节点都是Node

04、箭头函数有什么缺点?什么时候不能使⽤箭头函数?

** 箭头函数的this指向⽗作⽤域 **

 

箭头函数有什么缺点?

一,没有 arguments

二,⽆法通过 call、apply、bind 改变 this

1、相同点
三个都是用于改变this指向;
接收的第一个参数都是this要指向的对象;
都可以利用后续参数传参。
2、不同点
call和bind传参相同,多个参数依次传入的;
apply只有两个参数,第二个参数为数组;
call和apply都是对函数进行直接调用,而bind方法不会立即调用函数,而是返回一个修改this后的函数。

 

不能使⽤箭头函数的场景:

1.对象的⽅法,不能使⽤ -> this 指向不正确

2.原型⽅法 __proto__,不能使⽤ -> this 指向不正确

3.构造函数,不能使⽤ -> this 指向不正确

4.动态上下⽂中使⽤this,不能使⽤ -> this 指向不正确

5.Vue的⽣命周期和method,不能使⽤ -> this 指向不正确

 

05、for..in 与 for..of 有什么区别?

for..in 遍历得到key,可以遍历对象,不可以遍历 Set 和 Map

for..of 遍历得到value,不可以遍历对象,可以遍历 Set 和 Map

Set 和 Map

Set 

  • 集合是由一组无序且唯一的项组成的,可以想象成集合是一个既没有重复元素,也没有顺序概念的数组
  • ES6提供了新的数据结构Set,类似于数组,但是成员的值都是唯一的,没有重复的值
  • Set本身是一个构造函数,用来生成Set数据结构的

Map

  • 类似于对象,也是键值对的集合,但是键的范围不限于字符串,各种类型的值都可以当作键,是一种更完善的Hash结构实现,如果你需要键值对的数据结构,Map 比 Object更合适
  • 集合和字典的区别:
    — 共同点:集合,字典可以存储不重复的值
    — 不同点:集合是以[值,值]的形式存储元素,字典是以[键,值]的形式存储

06、typeOf 可以判断哪些类型?

基本数据类型,判断 {} 或 【】会返回 object

undefined

string

number

boolean

function

object

symbol 是ES6 引入了一种新的基本数据类型(原始数据类型) Symbol ,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,前六种是: undefined 、 null 、布尔值(Boolean)、字符串 (String)、数值(Number)、对象(Object)。

每个从 Symbol() 返回的symbol值都是唯一的。一个symbol值能作为对象属性的标识符

07、阅读代码,填写结果

console.log('我的年龄是' + 18 + 1)    我的年龄是181

console.log(100 == '100')  true

console.log(0 == '') true

console.log(0 == false) true

console.log(false == '') true

console.log(null == undefined) true

08、何时使⽤ == ?何时使⽤ === ?

除了 if (obj.a == null) 使⽤ == 之外,全部⽤ ===

扩展

falsely 变量,除此之外都是 truly 变量

!!0 === false

!!NaN === false

!!'' === false

!!null === false

!!undefined === false

!!false === false

!! 取反之后还是 false 的就是 falsely 变量

09、阅读代码,填写结果

let a1=10;
let b1=a1;
b1=100;
console.log(a1); // 此时 a1 的值是多少?
let a2={age: 18};
let b2=a2;
b2.age=20;
console.log(a2); // 此时 a2.age 的值是多少?

【值类型】

赋值后,⼊栈,不会互相⼲扰

常⻅值类型:undefined、string、bumber、boolean、symbol

【引⽤类型】

会互相⼲扰

常⻅引⽤类型:对象{a:10}、数组[1, 2, 3]、null

一个是传值,一个是传址

10. ⼿写深拷⻉函数

const obj={
 name: '张三',
 学⽣反馈
 age: 18,
address: {
  city: 'beijing'
 },
 hobby: ['篮球', '台球']
}
function deepClone(obj = {}) {
if (typeof obj !== "object" || obj == null) {
return obj;
 }
let result;
if (obj instanceof Array) {
result = [];
 } else {
result = {};
 }
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
result[key] = deepClone(obj[key]);   // 递归
 }
 }
return result;
}

 个人博客原文地址:http://blog.qianbaiyv.cn/get/my/blog/details/2311887075%40qq.com/118

有关面试 个人摸底监测 考察JavaScript基础 (第三天)的更多相关文章

  1. 【Java 面试合集】HashMap中为什么引入红黑树,而不是AVL树呢 - 2

    HashMap中为什么引入红黑树,而不是AVL树呢1.概述开始学习这个知识点之前我们需要知道,在JDK1.8以及之前,针对HashMap有什么不同。JDK1.7的时候,HashMap的底层实现是数组+链表JDK1.8的时候,HashMap的底层实现是数组+链表+红黑树我们要思考一个问题,为什么要从链表转为红黑树呢。首先先让我们了解下链表有什么不好???2.链表上述的截图其实就是链表的结构,我们来看下链表的增删改查的时间复杂度增:因为链表不是线性结构,所以每次添加的时候,只需要移动一个节点,所以可以理解为复杂度是N(1)删:算法时间复杂度跟增保持一致查:既然是非线性结构,所以查询某一个节点的时候

  2. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  3. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  4. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  5. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

  6. ruby - 尝试比较两个文本文件,并根据信息创建第三个 - 2

    我有两个文本文件,master.txt和926.txt。如果926.txt中有一行不在master.txt中,我想写入一个新文件notinbook.txt。我写了我能想到的最好的东西,但考虑到我是一个糟糕的/新手程序员,它失败了。这是我的东西g=File.new("notinbook.txt","w")File.open("926.txt","r")do|f|while(line=f.gets)x=line.chompifFile.open("master.txt","w")do|h|endwhile(line=h.gets)ifline.chomp!=xputslineendende

  7. ruby - 在 Mechanize 中使用 JavaScript 单击链接 - 2

    我有这个:AccountSummary我想单击该链接,但在使用link_to时出现错误。我试过:bot.click(page.link_with(:href=>/menu_home/))bot.click(page.link_with(:class=>'top_level_active'))bot.click(page.link_with(:href=>/AccountSummary/))我得到的错误是:NoMethodError:nil:NilClass的未定义方法“[]” 最佳答案 那是一个javascript链接。Mechan

  8. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  9. 西安华为OD面试体验 - 2

    西安华为OD面试体验开始投简历技术面试进展工作进展开始投简历去年一整年一直在考研和工作之间纠结,感觉自己的状态好像当时的疫情一样差劲。之前刚毕业的时候投了个大厂的简历,结果一面写算法的时候太拉跨了,虽然知道时dfs但是代码熟练度不够,放在平时给足时间自己可以调试通过,但是熟练度不够那面试当时就写不出来被刷了。说真的算法学到后期我感觉最重要的是熟练度和背板子(对于我这种普通玩家来说),面试题如果一上来短时间内想不出思路就完蛋了。然后由于当时找的工作不是很理想就又想考研了。但是考研是有风险的,我自我感觉自己可能冲不上那个学校,而找工作一个没成可以继续找嘛。本着抱着试试看的态度在boss上投了简历,

  10. javascript - jQuery 的 jquery-1.10.2.min.map 正在触发 404(未找到) - 2

    我看到有关未找到文件min.map的错误消息:GETjQuery'sjquery-1.10.2.min.mapistriggeringa404(NotFound)截图这是从哪里来的? 最佳答案 如果ChromeDevTools报告.map文件的404(可能是jquery-1.10.2.min.map、jquery.min.map或jquery-2.0.3.min.map,但任何事情都可能发生)首先要知道的是,这仅在使用DevTools时才会请求。您的用户不会遇到此404。现在您可以修复此问题或禁用sourcemap功能。修复:获取文

随机推荐