前端面试理论题

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

相关推荐
uhakadotcom几秒前
Mypy入门:Python静态类型检查工具
后端·面试·github
庸俗今天不摸鱼31 分钟前
【万字总结】前端全方位性能优化指南(十)——自适应优化系统、遗传算法调参、Service Worker智能降级方案
前端·性能优化·webassembly
QTX1873032 分钟前
JavaScript 中的原型链与继承
开发语言·javascript·原型模式
黄毛火烧雪下38 分钟前
React Context API 用于在组件树中共享全局状态
前端·javascript·react.js
Apifox1 小时前
如何在 Apifox 中通过 CLI 运行包含云端数据库连接配置的测试场景
前端·后端·程序员
一张假钞1 小时前
Firefox默认在新标签页打开收藏栏链接
前端·firefox
高达可以过山车不行1 小时前
Firefox账号同步书签不一致(火狐浏览器书签同步不一致)
前端·firefox
m0_593758101 小时前
firefox 136.0.4版本离线安装MarkDown插件
前端·firefox
掘金一周1 小时前
金石焕新程 >> 瓜分万元现金大奖征文活动即将回归 | 掘金一周 4.3
前端·人工智能·后端
三翼鸟数字化技术团队1 小时前
Vue自定义指令最佳实践教程
前端·vue.js