总结一些平时在电脑上写的很溜,但是在面试白班测试总是写不好的一些面试题吧!个人不喜欢白板测试,没有那种敲代码的感觉,并且一些细节也不好把控。
1 编写函数sum(2,3)和sum(2)(3)都能得到5
|
|
2 url地址的操作
|
|
3 运算符的操作,主要是 + ++ - && || 以及运算符的优先级的问题(感兴趣可以看看我这篇总结)
这里在回顾一下
+ 运算符
- 如果一个运算数是字符串,那么这个运算环境就是字符串环境,另外一个运算数,不论是布尔类型,数字类型,undefined null NaN 以及数组,对象都会转化为字符串,然后进行字符串拼接
- 如果一个运算数是数字,另外一个运算数是布尔类型,会将布尔类型转化为数字
- 如果一个运算数是数组或者对象,会将数组或者对象转化为原始数据类型(调用toString方法),然后进行运算(一般也就是将数组或者对象转化为字符串,所以后续也是进行的字符串的拼接)
- 运算符
- -运算符提供的是一个数字运行环境,会将字符串,布尔类型的值转化为数字(Number和parseInt方法),如果转化失败则返回NaN
- 如果有运算数是对象或者数组,会先调用对象或者数组的toString方法,然后调用Number和parseInt方法转化为数字,进行数字的运算,如果转化失败则返回NaN
|
|
4 有关闭包的一个测试 如何实现点击每个 li 输出其 index 值,注册事件之后,触发事件,然后事件监听器函数就会执行
|
|
|
|
利用闭包 返回一个函数作为listener
|
|
还有一个简单的实现思路就是 给每一个li设置一个属性即可
|
|
5 类数组转化为数组 apply,call 第一个参数改变函数的this指向,第二个参数表示传入函数的参数
|
|
6 数组的去重
|
|
7 字符串的去重
|
|
8 break和continue
|
|
|
|
9 + - 运算符以及NaN undefined
|
|
主要考察以下知识点
- 带有undefined的基本运算结果返回NaN : undefined*2 undefined+2等
- 带有NaN的比较运算符结果返回false; NaN == NaN 也是false
- x 和+ 运算中数字和布尔类型的运算,会将布尔类型转化为数字在进行运算 !b*2 = 2
- 带有字符串的 + 性环境中,会将另外一个运算数转化为字符串,然后进行字符串的拼接 !b*2+’2’ : ‘22’;
- - 性环境中,会将字符串,如果一个是字符串,另外一个是数字会将字符串转化为数字(即使两个都是字符串也会将两个都转化为字符串) ‘22’-0 : 22 数字类型的22
- 如果没有 - 0 这步运算,那么返回的结果将是 字符串 ‘224’;
10 日期操作
|
|
11 实时获取页面中的元素
|
|
执行后
|
|
这里需要注意的一点是 DOM获取的元素 items是实时更新的;
12 变量声明提升 函数声明优先于变量声明
|
|