前端面试理论题

简介: 前端面试理论题

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

相关文章
|
3月前
|
存储 前端开发 JavaScript
前端面试题23-34
通过对 Promise 和 ECMAScript6 的深入理解,可以更好地应对现代 JavaScript 开发中的复杂异步操作和新特性,提升代码质量和开发效率。
36 2
|
1月前
|
缓存 前端开发 中间件
[go 面试] 前端请求到后端API的中间件流程解析
[go 面试] 前端请求到后端API的中间件流程解析
|
1月前
|
存储 XML 移动开发
前端大厂面试真题
前端大厂面试真题
|
1月前
|
存储 前端开发 JavaScript
44 个 React 前端面试问题
【8月更文挑战第18天】
27 2
|
1月前
|
存储 JavaScript 前端开发
2022年前端js面试题
2022年前端js面试题
21 0
|
1月前
|
存储 前端开发 JavaScript
44 个 React 前端面试问题
44 个 React 前端面试问题
|
1月前
|
存储 JavaScript 前端开发
|
1月前
|
Web App开发 存储 缓存
|
1月前
|
前端开发 容器
前端面试热门问题--浮动和清除浮动(CSS)
前端面试热门问题--浮动和清除浮动(CSS)
|
30天前
|
前端开发 应用服务中间件 API
"揭秘!面试官必问:你是如何巧妙绕过跨域难题的?前端代理VS服务器端CORS,哪个才是你的秘密武器?"
【8月更文挑战第21天】在软件开发中,尤其前后端分离架构下,跨域资源共享(CORS)是常见的挑战。主要解决方案有两种:一是服务器端配置CORS策略,通过设置响应头控制跨域访问权限,无需改动前端代码,增强安全性;二是前端代理转发,如使用Nginx或Webpack DevServer在开发环境中转发请求绕过同源策略,简化开发流程但不适用于生产环境。生产环境下应采用服务器端CORS策略以确保安全稳定。
27 0