前端面试理论题

1.什么是js?js的特点是什么?

js: 是一种直译式脚本语言,是一种动态类型、弱类型、基于原型的高级语言。

特点:简单性;安全性;动态性;跨平台性;

简单性:它的变量类型是采用弱类型,并未使用严格的数据类型。

安全性:js 不允许直接访问本地的硬盘,而且不能将数据存放到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互,从而有效地防止数据的丢失。

动态性:js 可以直接对用户的输入做出响应而无需经过 Web 服务程序。它对用户的响应是采用以事件驱动的方式进行的。

跨平台性:js 仅依赖于浏览器本身,与操作系统无关,只要是能运行浏览器的计算机,并支持js 的浏览器就可以正确执行。

2.js由那三部分组成?

Java Script的三个主要组成部分是:ECMAScript(核心),DOM(文档对象模型),BOM(浏览器对象模型)。

3.为什么最好把 js 的 script 标签恰好放在 body 结束标签之前?

脚本在下载和执行期间会阻止 HTML 解析。把<script>标签放在底部,保证 HTML 首先完成解析,将页面尽早呈现给用户。

4.什么是语句?什么是表达式?怎么区分?

  • 表达式 :产生一个值
  • 语句 :执行一个操作

一个表达式可以产生一个值,有可能是运算、函数的调用、有可能是字面量。表达式可以放在任何需要值的地方。

语句可以理解为一个行为,循环语句和判断语句就是典型的语句。一个程序由很多的语句组成,一般情况下一个分号;分割一个一个的语句。

表达式不会对程序执行结果产生影响,而语句是程序的基本单位,对程序结果产生影响。

5.说明全局变量和局部变量的作用范围和生命周期

全局变量:范围是整个HTML页面,生命周期整个程序

局部变量:范围是这个变量的代码块,生命周期是函数创建时执行,结束时销毁。

6.数据类型有几种?一共有几种?判断数据类型的方法是什么?

有 基本数据类型 和 引用数据类型

基本数据类型:

undefined(未定义)

null(空值)

string(字符串)

number(数字)

boolean(布尔值)

引用数据类型:

object 对象

array 数组

function 函数

使用 type of 判断数据类型

判断数据类型的方法:object.prototype.tostring.call()

7.js中的命名规则

1. 变量

命名方法:小驼峰式命名法。

命名规范:前缀应当是名词。

2. 常量

命名方法:名称全部大写。

命名规范:使用大写字母和下划线来组合命名,下划线用以分割单词。

  1. 函数

命名方法:小驼峰式命名法。

命名规范:前缀应当为动词。

4. 构造函数

命名方法:大驼峰式。

命名规范:前缀为名称。

5. 类的成员

① 公共属性和方法:小驼峰。

② 私有属性和方法:前缀为_(下划线),后面小驼峰。

  1. 引用数据类型和基础数据类型的区别?

一、存储上的区别

1.基本数据类型是存放在栈中的简单数据段。

2.引用数据类型是存放在堆内存中的对象,在栈内存中存放的是堆内存中具体内容的引用地址,通过这个地址可以快速查找到对象。

二、比较上的区别

1.基本数据类型的比较是值的比较为(true)

2.引用类型的比较是引用的比较为(false)

因为引用类型比较的是地址,也就是比较两个对象保存在栈区的指向堆内存的地址是否相同,虽然看起来一样,但是他们指向堆内存的地址是不一样的,所以两个对象不相等。

三、赋值上的区别

1.基本数据类型的赋值是简单赋值,如果一个变量向另一个变量赋值基本类型的值,会在变量对象上创建一个新值,然后把这个值复制到为新变量分配的位置上。

2.引用类型的赋值是对象引用

8.javascript 的 typeof 返回哪些数据类型?(写英文)

typeof 共返回6种数据格式:

1、object

2、undefined

3、string

4、number

5、boolean

6、function

特别注意Array和Null返回的都是Object

9.如何判断 NaN?

1、NaN 不是一个数字且数据类型为 number,而且不等于自身

可直接采用内置方法 isNaN

function isNaN(n) {

if (n !== n) {

return true;

} else {

return false;

}}

2、利用 NaN 是唯一个不等于任何自身的特点

var a=NaN;

a==a; //false

3、object.is 方法

console.log(Object.is("a", NaN));

console.log(Object.is(1, NaN));

console.log(Object.is(NaN, NaN));

10. null和undefined的区别是什么?

null 表示为空,没有值

undefined 表示为未定义,应该有值,但是没有赋值

null是一个表示"无"的对象,转为数值时为0

undefined是一个表示"无"的原始值,转为数值时为NaN

11.JavaScript中undefined和not defined的区别

undefined:不明确的,也就是不知道用来干嘛的(虽有无值)

not defined: 未定义的,也就是突然冒出来的(无中生有)

12. 什么是全局污染?怎么避免全局污染?

全局污染:当使用了相同的全局变量或定义了相同命名的顶层函数,都会造成命名冲突

解决方法:只创建一个全局变量,并定义该变量为当前应用容器,把其他变量追加在该命名空间下。及利用匿名函数(自执行函数)将脚本包裹起来。

13. javaScript输出数据的方法?

使用 alert()弹出警告框

使用 docunment.write()将内容写到HTML文档中

使用 docunment.innerHTML 写到HTML 元素中

使用 console.log()写到浏览器的控制台

13.例举3种强制类型转换和2种隐式类型转换?强制类型转换和隐式类型转换的区别是什么?

强制转换;String();Boolean();Number (数字)

隐式转换;== 之间发生隐式转换

一元运算符 + - !

区别是;强制类型转换有确定的方法,隐式类型转换只能通过运算符来进行隐式转换

14.在 js 中哪些值会被隐式转换为 false

  1. 0 (两种 -0 和 +0)
  2. 空字符串(' ' 和 " "两种形式的空字符串都会认为是false)
  3. null
  4. undefined
  5. NAN

14.运算符分为哪几类?哪些运算符常用作判断?简述运算符的优先级

运算符包含6大类:算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三元(目)运算符。

逻辑运算符常用作布尔判断

运算符优先级:小括号、一元运算符、算术运算符、关系运算符、相等运算符、逻辑运算符赋值运算符、逗号运算符

15.++i 和i ++ 的执行顺序有什么区别?

++i 是先自增,后赋值。

i++ 是先赋值,然后再自增。

16.等于和绝对等于的区别?

==:会进行类型的转换之后再判断两者是否相等

===:不会进行数据类型的转换,先判断两边的数据类型是否相等,如果数据类型相等的话才会进行接下来的判断,再进行等式两边值得判断

等于就是对类型不同,但是值相同时,会进行隐式类型转换,已达到判断的目的;

绝对等于,在判断时会先进行类型判断,如果类型相等的话才会进行接下来的判断

16.请写出js的入口函数?并讲解入口函数的作用。

window.οnlοad=function(){} 改变加载顺序,等待页面加载完毕之后执行。

相关推荐
释怀°Believe32 分钟前
Daily算法刷题【面试经典150题-5️⃣图】
算法·面试·深度优先
我笔记37 分钟前
vue 子父调用
前端·javascript·vue.js
2401_860319521 小时前
在React Native鸿蒙跨平台开发中实现一个冒泡排序算法并将其应用于数据排序,如何进行复制数组以避免直接修改状态中的数组
javascript·算法·react native·react.js·harmonyos
学历真的很重要1 小时前
PyTorch 机器学习工作流程基础 - 完整教程
人工智能·pytorch·后端·python·深度学习·机器学习·面试
毕设源码-朱学姐1 小时前
【开题答辩全过程】以 基于vue.js的校园二手平台为例,包含答辩的问题和答案
前端·javascript·vue.js
m0_471199631 小时前
【JavaScript】Set 和 Map 核心区别与实战用法(ES6 集合全解析)
前端·javascript·es6
dragoooon341 小时前
仿muduo库实现高并发服务器-面试常见问题
运维·服务器·面试
hoiii1872 小时前
MATLAB中主成分分析(PCA)与相关性分析的实现
前端·人工智能·matlab
小白|2 小时前
【OpenHarmony × Flutter】混合开发性能攻坚:如何将内存占用降低 40%?Flutter 引擎复用 + ArkTS 资源回收实战指南
开发语言·javascript·flutter
Dream it possible!2 小时前
LeetCode 面试经典 150_图的广度优先搜索_最小基因变化(93_433_C++_中等)(广度优先搜索(BFS))
c++·leetcode·面试·广度优先