首页 > 编程语言 >前端JavaScript高频面试题

前端JavaScript高频面试题

时间:2023-08-12 18:04:20浏览次数:35  
标签:box 面试题 元素 函数 对象 JavaScript 运算符 定时器 高频

一、js基本概念

1.HTML语义化理解?

得分点:语义化标签,利于页面结构化,利于没有css页面也可读,利于SEO,利于代码可读
标准答案:在使用html标签构建页面时,避免大篇幅的使用无语句的标签

2.说一说盒模型?

得分点:标准盒模型、怪异盒模型(box-sizing:border-box;)、盒模型大小
标准答案:
标准模型(box-sizing:content-box):给盒子设置width和height,实际设置的是content-box,padding和border加上设置的宽高就是整个盒子的大小;
怪异盒模型(box-sizing:border-box):给盒子设置width和height,包含了padding和border,设置的width和height就是盒子的实际大小;
默认情况下,盒模型都是标准盒模型

3.对象是由_属性_和_方法_组成的,是一个无序键值对的集合,指的是一个具体的事物

  • 属性:事物的特征,在对象中用属性来表示(常用名词)
  • 方法:事物的行为,在对象中用方法来表示(常用动词)

4.有关自增自减运算符描述:

  • 如果需要反复给数字变量添加或减去1,可以使用递增(++)和递减(--)运算符来完
  • 递增(++)和递减(--)既可以放在变量前面,也可以放在变量后面
  • 放在变量前面时,我们可以称为前置递增(递减)运算符,放在变量后面时,我们可以称为后置递增(递减)运算符
  • 递增和递减运算符必须和变量配合使用

5.在JavaScript中,方法是作为对象成员的函数,表面对象所具有的行为

6.关于函数内this指向的描述

  • 普通命名函数内部的this指向window对象
  • 构造函数内部的this指向 实例对象
  • 事件处理函数内部的this指向事件源对象
  • 定时器回调函数内部的this指向window对象

7.逻辑运算符常用于布尔型的数据进行操作, 当操作数都是布尔值时,返回值也是布尔值;当操作数不是布尔值时,运算符"&&""||"的返回值就是一个特定的操作数的值.

8.键盘码中只有数字和字母与ASCII码表中的编号相同

9.网页在浏览器中加载的过程可以触发事件进行相关操作(利用页面加载事件进行处理)

10.JavaScript中函数名称严格区分大小写

11.一个完整的for循环,应该具备的条件

  • 循环的初始变量
  • 循环的判断条件
  • 循环的增量或者减量

12.javaScript中焦点事件都不会发生冒泡,如focusblur

13.类的定义、通过关键字class创建类的注意点

(1) 类的定义,在 ES6 中新增加了类的概念,可以使用class关键字声明一个类,之后以这个类来实例化对象.类抽象了对象的公共部分,它泛指某一大类(class)对象特指某一个,通过类实例化一个具体的对象

(2) 通过关键字class创建类的注意事项,

  1. 通过class关键字创建类, 类名我们还是习惯性定义首字母大写

  2. 类里面有个constructor函数,可以接受传递过来的参数,同时返回实例对象

  3. constructor函数只要new生成实例时,就会自动调用这个函数, 如果我们不写这个函数,类也会自动生成这个函数

  4. 多个函数方法之间不需要添加逗号分隔

  5. 生成实例new不能省略

  6. 语法规范, 创建类 类名后面不要加小括号,生成实例 类名后面加小括号, 构造函数不需要加function

14.关于JS封装匀速运动函数

  1. 在函数开始的时候要清除上次的定时器,防止一个元素被多个定时器控制

  2. 在定时器里面需要用原来的位置加上每次移动的距离

  3. 最好把定时器挂着到要运动的元素上面,例如oDiv.timer,这样能明确的知道定时器属于哪一个元素对象

  4. 运动的原理就是重复的让元素的当前位置加上一个步长,所以使用 setInterval 比较合适,而不是使用 setTimeout,因为setInterval会重复执行执行函数,而setTimeout默认情况下只会在时间到了之后触发执行函数一次

二、js类型转换

NaN不等于任何东西,包括它自己

类型 将目标转换为
Number 数字类型
String 字符串
toString 将num转化为n进制数并转换为字符串,undefined和null不可用
Boolean 布尔类型
parseInt 以目标数字为基地转化为十进制
parseFloat 浮点型数字
isNaN 判断数据是否为NaN,执行过程先对数据进行Number()操作,然后执行后的数据跟NaN进行对比看是否相同

三、js常用方法

1.实现深拷贝用到的主要技术点是_递归_

2.window.event是为了_解决IE老版本的兼容性问题_

3.调用元素.classList的返回值,返回的是_元素的DOMTokenList的集合/伪数组_

4. 页面有图片元素<img src="image/pic.png" title="图片">,假设已经获取到元素img,获取图片地址正确的方式是_img.src_,获取图片标题_img.title_

5.Math

函数 作用
Math.floor() 向下取整
Math.ceil() 向上取整
Math.round() 四舍五入
Math.random() 随机数(大于0.0小于1.0的伪随机double值)

6.keydown -> keypress -> keyup是正确的响应顺序

解析
keydown 当某个键盘按键按下时触发
keypress 当某个键盘按键按下时触发,但不识别功能键,比如左右箭头,shift等
keyup 当某个键盘按键别松开时触发

7.找父盒子内第一个子元素_firstElementChild_

8.找上一个或者下一个兄弟元素:_nextElementSibling_和_previousElementSibling_

9.假设一年中所有月份表示为1-12月,当前月份的是_getMonth()+1_

10.界面中有一个按钮btn,给这个按钮注册点击事件的两种方式

  • 通过onclick属性的赋值方式
 btn.onclick=function(){}

-通过调用addEventListener方法的方式

btn.addEventListener('click',function(){})

11.获取父级元素的父元素node.parentNode.parentNode

12.将创建的元素添加到页面中的方法

  • appenChild()
  • insertBefore()

13.关于日期对象,能获取总毫秒数(时间戳)的方法

  • new Date().getTime()
  • +new Date()
  • Data.now()

15.clientHeight

 <!-- oSpan.clientHeight 的值是? -->
 <span style="height: 100px; border: 10px solid pink; width: 100px; background: red;"></span>
 <!-- 答: 0;clientHeight 获取内联元素的值为0,span 是一个内联元素 -->

16.判断一个变量的数据类型_typeof(变量名)_

17.判断应该数组中是否包含某个特定元素_数组.includes(元素)_

18.复制一个对象_Object.assign({},原始对象)_

19.判断一个对象是否为空Object.keys(对象).length===0

20.将字符串转为大写小写

  • 字符串.toUpperCase()
  • 字符串.toLowerCase()

21.用JavaScript实现继承

  • 子类.prototype=Object.create(父类.prototype)
  • 子类.prototype.constructor=子类

22.阻止事件冒泡默认行为

  • 事件.stopPropagation();
  • 事件.preventDefault();

23.关于call(),bind(),apply()的描述

  • call()方法常用于实现继承
  • bind()方法常用于改变回调函数内部this的指向
  • apply()方法经常用于对数组的操作

标签:box,面试题,元素,函数,对象,JavaScript,运算符,定时器,高频
From: https://blog.51cto.com/u_16223957/7060353

相关文章

  • C C++ Java python HTML/CSS/JavaScript
    C/C++是一种底层的语言,它可以直接操作内存和硬件,运行速度很快,但是也很难学习和调试,容易出错。Java是一种面向对象的语言,它可以跨平台运行,有很多成熟的框架和库,适合做大型的企业级应用,但是也很繁琐和冗长,需要写很多代码。Python是一种高级的语言,它可以用简洁的语法来实现复杂的功能......
  • .net面试题
    第一问:C#中变量类型分为哪两种?​ 值类型和引用类型,值类型变量自身存储数据,引用类型存储的势实际数据的引用,通过引用找到实际的数据。第二问:Class和Struct的区别?​ Class为引用类型,可以被实例化,存储实际的引用;Struct为值类型,值类型自身存储数据数据。第三问:C#中类的修饰符和......
  • How to set z-index order in Canvas using javascript All In One
    Howtosetz-indexorderinCanvasusingjavascriptAllInOne如何使用javascript在Canvas中设置z-index顺序globalCompositeOperation//全局作用域globalscopeconstcvs=document.querySelector("#canvas");constctx=canvas.ge......
  • 【面试题】前端面试十五问
    数组去重遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素在新数组里面没有出现过,我们就添加,否则不添加先封装一个函数,uniquefunctionunique(arr){varnewArr=\[]for(vari=0;i<arr.length;i++){if(newArr.indexOf(arr\[i]===-1){newArr.push(arr\[i])}}return......
  • 【面试题】这道面试题真的很变态吗?
    最近帮公司招聘,主要负责一面,所以基本上问的基础多一点。但是我在问这样一道面试题的时候,很少有人答对。不少人觉得我问这道题多少有点过分了......
  • 【面试题】 JavaScript中高级语法--?? 表达式 的作用
    前言在JavaScript中,双问号(??)表达式是一种非常有用的方法。它的作用是用来检测一个值是否为null或undefined。如果该值为null或undefined,那么双问号表达式会返回一个默认值。下面我们就来具体探究一下双问号表达式的用法,以及它与其他相似方法的区别。具体用法。其实,双问号表达式就是......
  • Javascript 面向对象编程
    avascript是一个类C的语言,他的面向对象的东西相对于C++/Java比较奇怪,但是其的确相当的强大,在 Todd同学的“对象的消息模型”一文中我们已经可以看到一些端倪了。这两天有个前同事总在问我Javascript面向对象的东西,所以,索性写篇文章让他看去吧,这里这篇文章主要想从一个整体的角度......
  • 认识Javascript数组
    1.认识数组 数组就是某类数据的集合,数据类型可以是整型、字符串、甚至是对象Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维数组的功能 1.1定义数组声明有10个元素的数组vara=newArray(10此时为a已经......
  • 【金九银十面试冲刺】Android岗面试题每日分享——Android Framework篇
    又到了面试题分享的时间,今天分享的是AndroidFramework方面的的面试题,总共包含以下四大类:系统启动流程面试题解析Binder面试题解析Handler面试题解析AMS面试题解析话不多说,直接接上面试题!!!!一、你了解Android系统启动流程吗?当按电源键触发开机,首先会从ROM中预定义的地方加载引导......
  • javascript 数组(array) 常用的方法集锦(上)
    由于三大框架的出现,对DOM的操作转成对数据的操作,对数据的操作主要体现在数组和对象上,今天就以数组为例,对数组的各种操作进行总结欢迎访问幸福拾荒者,一个前端知识总结分享平台,与大家一起共同成长共同进步!......