javascript 经典问题汇总
1. ["1","2","3"].map(parseInt) 为多少?
答:[1,NaN,NaN]
array.map(function(currentValue,index,arr), thisValue)
原数组中的元素经过该方法后返回一个新的元素。
currentValue
callback的第一个参数,数组中当前被传递的元素。必须。
index
callback的第二个参数,数组中当前被传递的元素的索引。可选
array
callback的第三个参数,调用 map 方法的数组。可选
thisValue. callback函数里的this值 默认是window对象
parseInt(string, radix)
string: 需要转化的字符,如果不是字符串会被转换,忽视空格符。
radix:数字2-36之前的整型。默认使用10,表示十进制。
需要注意的是,如果radix在2-36之外会返回NaN。
因为parseInt函数接收2个参数,string,radix,如果map函数返回了这两个参数,不管意义是否是所期望的,都会将其作为参数执行。
以1-0-1,2,3为例,map(parseInt)中,parseInt作为callback函数执行的将是:parseInt('1',0)(前面那个数字1自动被转换为字符串1),其他同上。
看下面的执行函数结果
parseInt('1', 0);
parseInt('2', 1);
parseInt('3', 2);
所以遍历的结果是数组的第一个元素是可以正常显示。传入的键值为1,键名为0 输出1
而第二次 传入键值为2,键名为1 输出NaN 因为1进制的不可能会大于1的。
第三次传入键值为3,键名为2 输出了NaN 同样的,二进制是不会出现3的。
所以得到1,NaN,NaN
2.var a = b =10;
(function(){
var a = b = 20;
})();
console.log(a);
console.log(b);
问:输出的 a = ? b = ?
答:a=10 ,b=20
连等的问题。所以说连等不要随便乱用。
连等赋值的时候,如a = b = c;
这个执行顺序从右往左。
就相当与b = c;a = b;
并不是 b=c; a = c;
所以回到题目。
一开始是var a = b = 10;
这个时候就是b = 10;var a = b; 所以a = 10; 因为js 的var声明不在严格模式下的话,是可以不用写的,因为b 不存在,所以也自动声明了。
之后再在一个立即执行函数里面,在这个作用域下执行了var a = b = 20;
就相当于b = 20 ;var a = b; 因为这时候b在全局外部已经声明了所以修改的就是全局的变量。
而a前面还有var ,所以这个a只是针对该作用域下的变量。并没有修改全局变量的a.
所以在全局外部打印a = 10 b = 20了。
javascript 经典问题汇总的更多相关文章
- [转载]机器学习&深度学习经典资料汇总,全到让人震惊
自学成才秘籍!机器学习&深度学习经典资料汇总 转自:中国大数据: http://www.thebigdata.cn/JiShuBoKe/13299.html [日期:2015-01-27] 来 ...
- javascript中event汇总
原文:javascript中event汇总 ie firefox chrome opera Safari浏览器中对 event的处理并不一致,在此我将各个浏览器中event的兼容处理做了一个汇总,此处 ...
- JavaScript经典作用域问题(转载)
题目 var a = 10; function test(){ a = 100; console.log(a); console.log(this.a); var a; console.log(a); ...
- 《javascript经典入门》-day02
<javascript经典入门>-day02 1.使用函数 1.1基本语法 function sayHello() { aler('Hello'); //...其他语句... } #关于函 ...
- 《javascript经典入门》-day01
<javascript经典入门>-day01 1.了解JavaScript 01.浏览器每次加载和显示页面时,都在内存里创建页面及其全部元素的一个内部表示体系,,也就是DOM.在DOM里, ...
- 电子技术经典资料汇总:PCB设计篇
电子技术经典资料汇总:PCB设计篇,下面的链接是一个一个的文件下载的,也是压缩包的内容,只不过我把他们给汇总成了一个压缩包,方便大家下载,还有更多电子技术必备基础资料,通信无线类的,C语言篇的,关于电 ...
- C#重构经典全面汇总
C#重构经典全面汇总 1. 封装集合 概念:本文所讲的封装集合就是把集合进行封装,仅仅提供调用端须要的接口. 正文:在非常多时候,我们都不希望把一些不必要的操作暴露给调用端,仅仅须要给它所须要的操作 ...
- javascript常用知识汇总
javascript这个语言庞大而复杂,我用了三年多了,还是皮毛都不会.从刚开始的jquery,到后来的es6,每天都在学习,每天都在忘记. 1.禁止手机虚拟键盘弹出 在开发适配手机的页面时,出现了这 ...
- 机器学习&深度学习经典资料汇总,data.gov.uk大量公开数据
<Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.D ...
随机推荐
- Linq 查询 List集合
总是听到身边的同事说起Linq ,知道上学的时候学过,可是自从毕业之后就再也没用过,总觉得是很牛的技能 ,可是当自己真正学会用的时候才发现,我去,So easy .废话不多说直接上代码吧 var li ...
- spring+quartz报错:Table 'XXXX.QRTZ_TRIGGERS' doesn't exist
Spring4.3.4 + quartz2.2.1配置到application.xml中 <properties> <spring.version>4.3.4.RELEASE& ...
- YII2中behavior行为的理解与使用
YII2中的行为说白了就是对组件功能的扩展,在不改变继承关系的条件下. 行为附加到组件后,行为将注入自已的方法和属性到组件,可以像组件访问自定义的方法和属性一样访问行为. 注意行为是对功能的扩展,不要 ...
- 关于SharedPreferences存储数据的使用方法
SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来 ...
- 正则表达式 re sys os random time 模块
今天学习内容如下: 1.正则表达式 百度正则表达式在线测试,可以练习 正则表达式本身也和python没有什么关系,就是匹配字符串内容的一种规则.官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用 ...
- dev accordionControl panelcontorl 使用
对于dev的窗体布局我想更系统的专业的学学,不是评自己以往 的经验去做, 所以我看了dev的demo 里边的例子,封装的很严实,还有他们自己重新做的控件,无法直接使用, 关键的控件也上了锁,可能也是保 ...
- ES6 Reflect的认识
首先我们要了解一下,为什么会新添加这么一个全局对象?如果你看过Reflect的一些函数,你就会发现,这个对象上的方法基本上都可以从Object上面找到,找不到的那些,也是可以通过对对象命令式的操作去实 ...
- VS2013一次替换变量名
插件下载地址:https://visualstudiogallery.msdn.microsoft.com/164904b2-3b47-417f-9b6b-fdd35757d194 该插件目前只支持: ...
- hdu 1983(BFS+DFS) 怪盗Kid
http://acm.hdu.edu.cn/showproblem.php?pid=1983 首先,题目要求出口和入口不能封闭,那么,只要把出口或入口的周围全给封闭了那盗贼肯定无法成功偷盗,出口或入口 ...
- Maven 下载安装
http://www.runoob.com/maven/maven-tutorial.html https://www.yiibai.com/maven/ Maven 提倡使用一个共同的标准目录结构, ...