前端面试理论题

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(){} 改变加载顺序,等待页面加载完毕之后执行。

相关推荐
黑客老陈13 分钟前
新手小白如何挖掘cnvd通用漏洞之存储xss漏洞(利用xss钓鱼)
运维·服务器·前端·网络·安全·web3·xss
正小安18 分钟前
Vite系列课程 | 11. Vite 配置文件中 CSS 配置(Modules 模块化篇)
前端·vite
暴富的Tdy1 小时前
【CryptoJS库AES加密】
前端·javascript·vue.js
neeef_se1 小时前
Vue中使用a标签下载静态资源文件(比如excel、pdf等),纯前端操作
前端·vue.js·excel
m0_748235611 小时前
web 渗透学习指南——初学者防入狱篇
前端
℘团子এ1 小时前
js和html中,将Excel文件渲染在页面上
javascript·html·excel
z千鑫1 小时前
【前端】入门指南:Vue中使用Node.js进行数据库CRUD操作的详细步骤
前端·vue.js·node.js
m0_748250742 小时前
Web入门常用标签、属性、属性值
前端
m0_748230442 小时前
SSE(Server-Sent Events)返回n ,前端接收数据时被错误的截断【如何避免SSE消息中的换行符或回车符被解释为事件消息的结束】
前端