前端面试题----JS(随机排序)

1 js数据类型划分?javaScript属于弱语言类型,当前数据类型是由值决定的。- 基本数据类型- Number 数字类- String 字符串类- Boolean 布尔类- null 空,没有,访问一个不存在的对象,返回值就是null- undefined 未定义,没有进行赋值- symbol(es6新增)独一无二的数据类型- 复杂数据类型(引用数据类型)- Object 对象类- Array 数组类- function 函数2 基本数据类型与引用数
摘要由CSDN通过智能技术生成

1 js数据类型划分?

javaScript属于弱语言类型,当前数据类型是由值决定的。

- 基本数据类型

- Number 数字类

- String 字符串类

- Boolean 布尔类

- null 空,没有,访问一个不存在的对象,返回值就是null

- undefined 未定义,没有进行赋值

- symbol(es6新增)独一无二的数据类型

- 复杂数据类型(引用数据类型)

- Object 对象类

- Array 数组类

- function 函数

2 基本数据类型与引用数据类型有什么区别?

(1)两者作为函数的参数进行传递时:

基本数据类型传入的是数据的副本,原数据的更改不会影响传入后的数据。

引用数据类型传入的是数据的引用地址,原数据的更改会影响传入后的数据。

(2)两者在内存中的存储位置:

基本数据类型存储在栈中。

引用数据类型在栈中存储了指针,该指针指向的数据实体存储在堆中。

3 逻辑运算符用过吗?

&& 与    || 或       !非

&&:  表示且 的关系,都为真才为真,一假即假

|| :表示或的关系,都为假才为假,一真即真

!: 取反  先将当前数据转为布尔值再进行取反

4 你都知道那些判断数据类型的方法?

(1)利用 typeof 可以判断数据的类型;

(2)A instanceof B 可以用来判断 A 是否为 B 的实例,但它不能检测 null 和 undefined;

(3)B.constructor == A 可以判断 A 是否为 B 的原型,但 constructor 检测 Object 与 instanceof 不一样,还可以处理基本数据类型的检测。

(4)Object.prototype.toString.call() 是最准确最常用的方式。

5 深浅拷贝有什么区别?通过的什么方法?

浅拷贝只复制指向某个对象的指针,而不复制对象本身。

浅拷贝的实现方式有:

(1)Object.assign():需注意的是目标对象只有一层的时候,是深拷贝;

(2)扩展运算符;

深拷贝就是在拷贝数据的时候,将数据的所有引用结构都拷贝一份。

深拷贝的实现方式有:

(1)手写遍历递归赋值;

(2)结合使用JSON.parse()和JSON.stringify()方法。

6 let const var 有什么区别?

 9 什么是执行上下文与执行栈?区别是什么?

变量或函数的执行上下文,决定了它们的行为以及可以访问哪些数据。每个上下文都有一个关联的变量对象, 而这个上下文中定义的所有变量和函数都存在于这个对象上(如DOM中全局上下文关联的便是window对象)。

每个函数调用都有自己的上下文。当代码执行流进入函数时,函数的上下文被推到一个执行栈中。在函数执行 完之后,执行栈会弹出该函数上下文,在其上的所有变量和函数都会被销毁,并将控制权返还给之前的执行上 下文。 JS的执行流就是通过这个执行栈进行控制的。

区别:

(1)函数的执行上下文只在函数被调用时生成,而其作用域在创建时已经生成;

(2)函数的作用域会包含若干个执行上下文(有可能是零个,当函数未被调用时)。

10 什么是作用域以及作用域链?

作用域可以理解为一个独立的地盘,可以理解为标识符所能生效的范围。作用域最大的用处就是隔离变 量,不同作用域下同名变量不会有冲突。ES6中有全局作用域、函数作用域和块级作用域三层概念。

当一个变量在当前块级作用域中未被定义时,会向父级作用域(创建该函数的那个父级作用域)寻找。

如果父级仍未找到,就会再一层一层向上寻找,直到找到全局作用域为止。这种一层一层的关系,就是作用域链 。

11 分析下this的指向情况?

在对象内部的方法中使用对象内部的属性是一个非常普遍的需求。但是 JavaScript 的作用域机制并不支持这一点,基于这个需求,JavaScript 又搞出来另外一套 this 机制。 this存在的场景有三种全局执行上下文和函数执行上下文和eval执行上下文,eval这种不讨论。在全局执行环境中无论是否在严格模式下,(在任何函数体外部)`this` 都指向全局对象。在函数执行上下文中访问this,函数的调用方式决定了 `this` 的值。在全局环境中调用一个函数,函数内部的 th

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值