JS Test(44道)总结

原创 2017年10月03日 20:19:19

题目来自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()) // true
b === 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


版权声明:本文为博主原创文章,未经博主允许不得转载。

沈阳东软睿道实训心得-xx-燕山大学Java1班

很高兴可以来到东软睿道参加实训,实训期间收获很多。首先感谢学校的安排,感谢东软睿道的负责任的老师们。 所有的老师中给我留下最深印象的是教授Oracle的尹老师,尹老师不仅上课节奏快,而且讲解内容精炼,...
  • hengbao4
  • hengbao4
  • 2016年10月14日 09:39
  • 1086

js正则表达式test方法的问题

var re = /^\d+(?:\.\d)?$/ig; alert(re.test('112.3'));//true alert(re.test('112.3'));//false 表达式一样...
  • u013456765
  • u013456765
  • 2016年07月26日 18:14
  • 1486

js正则表达test、exec和match的区别

以前用js很少用到js的正则表达式,即使用到了,也是诸如邮件名称之类的判断,网上代码很多,很少有研究,拿来即用。 最近开发遇到一些需要使用正则表达式,顺便研究一下 正则表达式对象有两个...
  • z69183787
  • z69183787
  • 2014年01月05日 17:06
  • 12579

44道javaScript变态题(下)

转自:https://github.com/xiaoyu2er/blog/issues/3 第23题 [1 < 2 < 3, 3 < 2 < 1] 这个题也还可以. 这个题会让人...
  • gdp12315
  • gdp12315
  • 2016年07月05日 16:09
  • 382

44道javaScript变态题(上)

转自:https://github.com/xiaoyu2er/blog/issues/1  原题来自: javascript-puzzlers 读者可以先去做一下感受感受. 当初笔者的成...
  • gdp12315
  • gdp12315
  • 2016年07月05日 16:07
  • 555

程序员面试笔试中常见50道题目及答案

1.extern的作用 自己理解:应该需要区分extern在C语言中和C++语言中的作用,C语言中extern声明的函数和变量可以被该文件外部模块引用,C++语言中除了该作用还可以声明exter...
  • ziyouzhongdexiyan
  • ziyouzhongdexiyan
  • 2014年08月12日 19:47
  • 1065

Python 小甲鱼教程 课后练习44

按照视频内的内容,已经写出了一个计时器,但是小甲鱼要求的内容是,不能让时间出现负值,所以需要修改计时器 自己写的和小甲鱼写的完全不一样.....小甲鱼那个应该是先计算,再最后赋值并打印 自...
  • bestallen
  • bestallen
  • 2016年07月24日 16:04
  • 682

117 js 正则表达式 test方法 验证输入正整数 去空格 去双引号

//持续天数正整数验证 if(document.getElementsByName("days")[0].value ){ var reg_whole_numb...
  • fancivez
  • fancivez
  • 2015年11月24日 15:22
  • 1061

javascript正则全局匹配g慎用test方法

来自:http://www.coding123.net/article/20130108/javascript-regex-global-matcth-care-of-test-method.aspx...
  • Leolu007
  • Leolu007
  • 2013年02月08日 02:44
  • 1534

关于JS正则表达式中g模式下test出现true/false交替的个人见解

原文链接:http://bbs.blueidea.com/thread-2996104-1-1.html(出处: 经典论坛) 文章中的有些东西来自Franky大神的文章. Franky原文...
  • changhuzhao
  • changhuzhao
  • 2017年03月22日 17:32
  • 558
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JS Test(44道)总结
举报原因:
原因补充:

(最多只允许输入30个字)