JavaScript 面试题整理 -- 持续更新

JavaScript基础

  1. 如下两种数组/对象的创建的区别:

    var arr = new Array();
    var arr1 = [];

    arr是通过构造函数创建,arr1则是通过字面量直接创建,二者区别如下:

    • 构造函数可以被重构,而字面量声明不行。
    • 字面量可以直接在行内写property声明,构造函数不行。
    • 字面量生成对象比较快,不用找引用,不用遍历proto方法
    • 当你需要快速创建有大容量的数组时,推荐使用构造方法生成。
  2. 数组的习惯用法:
方法名说明返回值
push([item0, item1, item2])将参数添加到数组的末尾新数组的长度
pop()删除数组中的最后一个元素后返回该数组被删除的item的值
sort(comparefn)根据compareFn对数组进行排序并排序后的新数组
join(separator)在数组的元素之间加入分隔符之后生成相应的字符串值新生成的字符串
reverse()将数组中的元素逆序置换新数组
unshift([item0, item1, item2])将元素添加到数组的头部
shift()删除数组中的第一个元素

3. 用new 关键字创建对象时new的作用:

Created with Raphaël 2.1.2 开始 var obj= new Object(); 生成一个对象 通过new表达式调用构造函数,构造函数内的this引用新生成的对象。 返回一个对象,对象的引用为new表达式的值。

构造函数会隐式的执行return this,如果构造函数本身return了一个别的对象,则返回别的对象;如果return的是基本类型的值,那么就还是返回this对象
4. const, let, var:
+ var 有声明提前,即只要作用域内任何位置用var声明变量,其声明会被自动提前到作用域顶部。
+ let和const一定要先声明再使用, 且不允许重复声明,不存在声明提前,并且会从所在作用域开始到变量声明位置声场暂定性死区,即下面代码块会报错。
+ const声明一定要初始化,即声明的时候就要赋值。
+ 另外需要注意的是,var和let或者const出现在一个作用域中声明同一变量会报错,因为let和const都不能重复声明。
5. 箭头函数:
+ 箭头函数的this指向定义时所在的对象,而不是使用时所在的对象。箭头函数的指向是固定的
+ 不可以当做构造函数,不可以使用new命令,否则报错
+ 不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用rest参数代替。
+ 不可以使用yield命令,因此箭头函数不能用作Generator函数
6. apply, call, bind的区别:
- apply与call都可以用来改变函数引用的this指向,即调用的上下文,扩充函数的作用域。二者不同之处在于对于参数的传递不同。apply是将除了argObj之后的所有参数作为一个数组传递。而call是将之后的args原样传递。
- bind这个方法会创建一个函数的实例,其this值会被绑定到传给bind()函数的值。
7. ES6 module export/import, module.export, require之间的区别:
8. 闭包:
闭包是指有权访问另一个函数作用域中的变量的函数。常用方法是在一个函数内部声明另一个函数。
9. 原型链:
10. 快排

function quickSort(arr, left, right) {
    if(arr === undefined || arr.length <1) return arr;  //验空
    let pivot = arr.length/2;  
    let left = [];
    let right = [];
    //循环遍历,比pivot的值小的放到left里,比pivot的值大的放到right里
    for(var index; index< arr.length; index++){
        if(arr[index] < arr[pivot]){
            left.push(arr[index]);
        }
        else{
            right.push(arr[index]);
        }
    }
    return quickSort(left).concat(arr[pivot], quickSort(right)); 
    //对left和right两个子集进行循环并将结果合并。

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值