JS中面试题细节

JS中的面试题

https://juejin.im/post/5d0644976fb9a07ed064b0ca#heading-18

变量提升

1.变量的赋值可以分为三个阶段:

创建变量,在内存中开辟空间
初始化变量,将变量初始化为undefined
真正赋值
2.关于let、var和function:

  • let 的「创建」过程被提升了,但是初始化没有提升。使用let(和const)关键字声明的变量是具有块作用域的(块是{}之间的任何东西)
  • var 的「创建」和「初始化」都被提升了。
  • function 的「创建」「初始化」和「赋值」都被提升了。

3 普通函数与箭头函数
普通函数和箭头函数的 this关键字指向是不同的

  • 普通函数的this一般指的是它的直接调用者,默认情况下指的是window

  • call,apply,bind(ES5新增)绑定的,this指的是 绑定的对象

  • 箭头函数 没有自己的this,并不是自己执行的对象,有可能是window对象

4.一元符号
eg: +true; !"Lydia";
答案为: 1 and false

一元加号会尝试将boolean类型转换为数字类型。 true被转换为1,false被转换为0。
字符串’Lydia’是一个真值。 我们实际上要问的是“这个真值是假的吗?”。 这会返回’false’

5.对象的属性
bird为一个对象
size是bird的一个属性
bird.sizebird[“size”] 表达的是一样的,都是指bird的size属性
中括号里是字符串,指对象的属性

6.关于 new Number

let a = 3;
let b = new Number(3);
let c = 3;

console.log(a == b); // true;
console.log(a === b);//false;
console.log(b === c);//false;

new Number()是一个内置的函数构造函数,是一个对象,并不是一个数字

7.静态方法:static

class Chameleon {
  static colorChange(newColor) {
    this.newColor = newColor;
  }

colorChange方法是静态的。 静态方法仅在创建它们的构造函数中存在,并且不能传递给任何子级。只能 Chameleon这个类调用它

8.事件传播的三个阶段
捕获 > 目标 > 冒泡
在捕获阶段,事件通过父元素向下传递到目标元素。 然后它到达目标元素,冒泡开始。

9.不是所有的对象都有原型
基础对象没有原型,基础对象可以访问某些方法和属性。
基础对象指原型链终点的对象。基础对象的原型是null

10.++运算符的前缀与后缀
后缀一元运算符++:
先返回值,在增加值
前缀一元运算符++:
先增加值,再返回增加后的值

11.带参数的数组

function getAge(...args) {
  console.log(typeof args); //"object
}

getAge(21);

(…args)为一个带参数的数组,数组是一个对象

12.sessionStorage和localStorage
关闭选项卡后,将删除存储在sessionStorage中的数据。
使用localStorage,数据将永远存在,除非例如调用localStorage.clear()

13.JavaScript的假值

  • undefined
  • null
  • NaN
  • 0
  • “”(empty string)
  • false
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值