JS Test(44道)总结
来源:互联网 发布:淘宝大学标题优化 编辑:程序博客网 时间:2024/06/06 01:04
题目来自javascript-puzzlers
1.reduce
没有设置初始值的空数组使用reduce方法会抛出错误
reduce的callback函数有四个参数,preValue,curValue,curValue-index,array,如果没有设定初始值,reduce开始时第一个值为preValue,第二个为curValue
2.map&parseInt
map默认参数有两个,回调函数和回调函数的this值
该回调函数有三个默认值,curValue、index和array
parseInt()可以传有两个参数值,string和radix(基数)
parseInt()的radix为0时,算作基数为10
3.运算符顺序
三元运算符优先级低于+运算符
4.JS中能表示的最大整数
2^53是JS能正确计算而不失精度的最大整数,再加就丢失精度无法判断大小了
5.稀疏数组
js中,当数组为稀疏数组时,遍历数组时会跳过“坑位”,如图数组中
0 in array //true
3 in array //false
根据Array.prototype.map 的 polyfill.可以看出
Array.prototype.map = function(callback, thisArg) { var T, A, k; if (this == null) { throw new TypeError(' this is null or not defined'); } var O = Object(this); var len = O.length >>> 0; if (typeof callback !== 'function') { throw new TypeError(callback + ' is not a function'); } if (arguments.length > 1) { T = thisArg; } A = new Array(len); k = 0; while (k < len) { var kValue, mappedValue; if (k in O) { //attention! 首先检查这个索引值是不是数组的一个属性 kValue = O[k]; mappedValue = callback.call(T, kValue, k, O); A[k] = mappedValue; } k++; } return A; };
6.switch()中的表达式
严格比较时,String实例与字符串不一样
7.余数的正负号随第一个操作数
8.关于if() & == & === 的理解
if([]) 的含义:[]是否为“真值”
js里的“真值”很好判断,因为“假值”总共只有6个:
false,undefined,null,0,""(空字符串),NaN
if([] == true) 的含义:[]与true是否相等。true会先转换为1
使用==,在类型不同的情况下会进行类型转换,然后再比较,
(注意null==undefined)
而使用===,绝对相等,需要类型相同并且值相同,比较前没有操作
9.隐式转换
另 [ ]==![ ]result为true
[] == !true // ! 操作符的优先级高于 == ,所以先执行 ! 操作
[] == false // !true 得到的是 false
[] == 0 //比较规则1:如果值为true或false,则转成1或0来继续比较
[] == 0 //执行左侧的 [] 的 valueOf 方法,而 [] 是对象,所以 [].valueOf() 返回本身 []
"" == 0 //执行左侧的 [] 的 toString 方法,[].toString() 返回 ""
0 == 0 //比较规则2:如果一个值是数字,一个值是字符串,则把字符串转换为数字,再进行比较,"" 转成数字是 0。
最终是执行 0 == 0 ,结果为 true 。
10.
11.
12.arguments
但是!当函数参数涉及到 any rest parameters, any default parameters or any destructured parameters 的时候, 这个 arguments 就不在是一个 mapped arguments object 了.....
function sidEffecting(ary) { ary[0] = ary[2];}function bar(a,b,c=3) { c = 10 sidEffecting(arguments); return a + b + c;}bar(1,1,1) //12
13.prototype
f.prototype 是使用使用 new 创建的 f 实例的原型. 而 Object.getPrototypeOf 是 f 函数的原型.
a === Object.getPrototypeOf(new f()) // trueb === Function.prototype // true
14.function.name
Function.name
Functin.name是只读属性
15.emmmmmm...又是转换
16.js数组
js允许数组最后一项带一个,
17. Date
Date
Date/parse
18.function.length
一个function(Function 的实例)的 length 属性就是函数签名的参数个数, 所以 b.length == 0.另外 Function.length 定义为1.
19.神奇的min/max
- JS Test(44道)总结
- JS正则test()方法
- JS正则test()方法
- js test
- test js
- test.js
- Boost Test学习总结(C++)
- Boost Test学习总结(C++)
- test left_Function.js
- JS Test方法
- Js的Test()方法
- js 正则test问题
- Test Case for JS
- JS Version Test
- Team Test单元测试总结
- Unit test学习总结
- Js 正则表达式对象(方法:exec、test、match、search)
- js总结(一)
- 7月第三周
- 8月第一周
- 8月第二周
- 8月第三周
- 8月第四周
- JS Test(44道)总结
- JS——正则详解
- < 笔记 > Python
- 笔试总结(HTTP(S)/虚拟内存/xhr)
- 操作系统部分(持续更新中)
- 菜鸟系列——forEach、map、for...in、for...of
- Vue生态——axios
- 规则学习
- kubelet源码分析-pod新建流程