zoukankan      html  css  js  c++  java
  • JS面试经典知识(一)

    前端面试题精选

    原生JS

    1.ES6的新特性:

    let(****声明变量)

    const(****声明常量,常量不能修改的量)

    var****、let、const的区别

    1. let和const声明变量不存在变量提升,如果要使用这个变量,我们需要在变量定义之后使用;

    2. let和const不能重复声明变量,如果重复声明会报错;

    3. 用let 和 const 在全局声明变量不会给window增加属性;

    4. let和const出现在代码块中,会把代码块(字面量声明对象除外)变成块级作用域,并且出现暂时 性死区 class(****创建类)

    import/export(****基于ES6的模块规范创建导入/导出模块(文件/组件))

    new set(****数组去重)

    Symbol(****唯一的值) var a = Symbol('qqq')

    ...ary(****展开运算符、剩余运算符)

    **${}** 模板字符串

    解构赋值 let {a} = obj; let [b] = ary

    for of 循环

    ()=>{} 箭头函数

    箭头函数与普通函数的区别:

    1. 箭头函数是匿名函数,不能作为构造函数,不能使用new

    2. 箭头函数没有原型属性

    3.this指向不同,箭头函数的this是定义时所在的对象,普通函数看前面有没有.,点前面是谁this 就是谁,没有.就是window

    4. 不可以使用arguments对象,该对象在函数体内不存在。

    数组新增方法:flat、find、findIndex

    对象新增方法: Object.assign() Object.values() Object.keys() Object.create()...

    2.JS的数据类型

    基本数据类型: number 数字; boolean 布尔值 :有两个值 true、false ;string 字符串

    null 空对象; undefined 未定义的值(很多浏览器的初始值是undefined)

    Symbol() 产生一个唯一的值,和谁都不重复

    null和undefined的区别:

    null 是一个表示"无"的对象,转为数值时为 0

    undefined 是一个表示"无"的原始值,转为数值时为 NaN

    当声明的变量还未被初始化时,变量的默认值为 undefined

    null 用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象

    undefined 表示 “缺少值”,就是此处应该有一个值,但是还没有定义。

    典型用法是:

    1. 变量被声明了,但没有赋值时,就等于 undefined

    2. 调用函数时,应该提供的参数没有提供,该参数等于 undefined

    3. 对象没有赋值的属性,该属性的值为 undefined

    4. 函数没有返回值时,默认返回 undefined

    null 表示“没有对象”,即该处不应该有值。

    典型用法是:

    1. 作为函数的参数,表示该函数的参数不是对象

    2. 作为对象原型链的终点

    引用数据类型:

    对象

    .普通对象

    .数组对象

    .正则对象(匹配字符串的规则)

    .日期对象

    .函数对象

    ...

    对象的存储过程:

    1. 开辟一个空间地址

    2. 把键值对存储到这个空间地址的堆内存中

    3. 把这个对象指针赋值给变量名

    let obj = {

    a:1,

    fn:(function (val) {

    // 赋给fn的是自执行函数的执行结果 也就是一个undefined

    // 该自执行函数只会执行一次

    console.log(val);

    })(obj.a)

    };

    let obj2 = obj;// 两者代表了同一个地址;

    // 获取属性的值 obj.fn 或者 obj['fn']

    // 新增属性: obj.c = 100 或者 obj['c'] = 100

    // 真删除 delete obj.a (在严格模式下不支持该方法); 假删除: obj.a = null;

    // 引用类型小习题

    let a = 3;

    let b = new Number(3);

    let c = 3;

    console.log(a == b);

    console.log(a === b);

    console.log(b === c);

    //=========================

    const a = {};

    const b = { key: "b" };

    const c = { key: "c" };

    a[b] = 123;

    a[c] = 456;

    console.log(a[b]);

    基本数据类型与引用数据类型的区别:

    基本数据类型是操作值,引用数据类型操作的是堆内存空间地址

    布尔值转换:0 NaN '' null undefined 转化成布尔值是false,其余的都是true

    检验有效数字的方法:isNaN

    常用的数据类型检测方式: typeof constructor instanceof Object.prototype.toString.call()

    比较运算符:

    == 相对比较:会进行默认的类型转化; 若转换之后的值相等,则结果就是true

    === 绝对比较,值不但要相同、类型也得相同。

    引用数据类型之间的比较,就看是不是同一个地址;

    逻辑运算符:

    || 表示或者,前边成立给前边,前边不成立给后边

    && 表示并且前边成立给后边,前边不成立给前边

    本文由博客群发一文多发等运营工具平台 OpenWrite 发布

  • 相关阅读:
    HDU 1069 Monkey and Banana
    HDU 1029 Ignatius and the Princess IV
    HDU 1024 Max Sum Plus Plus
    Gym100923H Por Costel and the Match
    Codeforces 682C Alyona and the Tree
    Codeforces 449B Jzzhu and Cities
    Codeforces (ccpc-wannafly camp day2) L. Por Costel and the Semipalindromes
    Codeforces 598D (ccpc-wannafly camp day1) Igor In the Museum
    Codeforces 1167c(ccpc wannafly camp day1) News Distribution 并查集模板
    快乐数问题
  • 原文地址:https://www.cnblogs.com/HelloBytes/p/14058029.html
Copyright © 2011-2022 走看看