加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营 > 正文

【转】外国伴侣出的js标题,你能对几道

发布时间:2020-12-28 11:14:23 所属栏目:运营 来源:网络整理
导读:原文地点?http://perfectionkills.com/javascript-quiz/ 中文地点加表明:by Aaron:http://www.cnblogs.com/aaronjs/p/3172112.html 附带了本身的领略,谜底有争议的处所接待各人指出 标题一 2 3 4 ( function (){ ?? return ? typeof ? arguments; })(); ?
副问题[/!--empirenews.page--]

原文地点?http://perfectionkills.com/javascript-quiz/

中文地点加表明:by Aaron:http://www.cnblogs.com/aaronjs/p/3172112.html

附带了本身的领略,谜底有争议的处所接待各人指出

标题一

【转】外国伴侣出的js标题,你能对几道

?"object"
arguments是工具,伪数组有两件事要留意这里:
参数不是数组,它是一个数组一样的物体,你可以行使方括号和整数索引的元素,但要领凡是可在一个如推上不存在参数数组
Array.prototype.slice.call(arguments); 转成数组
虽然arguments纵然是数组,返回的依然是"object",由于数组也是工具,附加:typeof?对范例的判定
https://developer.mozilla.org/zh-CN/docs/JavaScript/Reference/Operators/typeof

标题二

【转】外国伴侣出的js标题,你能对几道

会产生错误
由于function g(){?return?23; }是函数表达式,究竟上只有事一个名字,不是一个函数声明
函数现实上是绑定到变量f,不是g.
指定的标识符在函数表达式固然有其用途:仓库跟踪是清楚而不是充斥着无名的函数,你可以有一个匿名函数递归挪用自己不行使argument.callee
附很是具体的帖子函数表达式
http://kangax.github.io/nfe/

标题三

【转】外国伴侣出的js标题,你能对几道

?1
参数不行删除
见我发过的帖子(js中的delete界说)
http://www.cnblogs.com/aaronjs/articles/3148934.html
海外的帖子(领略删除)
http://perfectionkills.com/understanding-delete/

标题四

【转】外国伴侣出的js标题,你能对几道

??"undefined"
通过重写代码如下功效:
var?a,b; 睁开就是?var?a;?var?b;.
A = B = C;相等于 B = C = B;

知道了这一点,我们重写并获得:
var?y = 1;?
y =?typeof?x;?
var?x = y;?
x;?

当执行
y =?typeof?x时,x 还没有被界说,以是y成为字符串"undefined",然后被分派到x

标题五

【转】外国伴侣出的js标题,你能对几道

??"number"
为了便于领略我们继承解析:

第一部门
var?baz =?function(){?return?1; };?

第二部门
(function?f(f){?
??return?typeof?f();?
})(baz);?

在这里,函数f接管一个参数是另一个函数,f函数内部执行这个实参函数而且返回范例
无论是从挪用该函数返回,纵然参数名称f与函数名斗嘴,函数接管自己作为本身的参数,然后挪用,此时就看谁更具有更高的优先级了,显然,参数的优先级更高,以是现实执行的是returntypeof?1

标题六

复制代码

var foo = {  
  bar: function() { return this.baz; },baz: 1 
}; 

(function(){  
  return typeof arguments[0](); 
})(foo.bar);

复制代码

【转】外国伴侣出的js标题,你能对几道

 "undefined"
为什么是"undefined"?.
我们必必要知道this运算符是怎么事变的.

JS说话精炼总结的很精辟:
1 纯粹的函数挪用
2 作为工具要领的挪用
3 作为结构函数挪用
4 apply挪用

我们看看标题是属于那种情形?
在arguments[0]()中执行了一个要领,arguments[0]就是foo.bar要领
留意:这在foo.bar中的this是没有绑定到foo

固然 foo.bar 转达给了函数,可是真正执行的时辰,函数 bar 的上下文情形是 arguments ,并不是 foo
arguemnts[0] 可以领略为 arguments.0(不外写代码就不要这样了,语法会错误的),以是这样看来,上下文情形是 arguemnts 就没题目了,以是在执行baz的时辰天然this就是window了,window 上没有baz属性,返回的就是undefined,typeof挪用的话就转换成"undefined"了

附上博文
http://www.cnblogs.com/aaronjs/archive/2011/09/02/2164009.html

MDC
https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/this_Operator#Description

标题七

var foo = { 
  bar: function(){ return this.baz; },baz: 1 
} 
typeof (f = foo.bar)();

【转】外国伴侣出的js标题,你能对几道

  "undefined"
继承改写一下:
var foo = { 
  bar: function(){ return this.baz; },baz: 1 
} 

f = foo.bar; 

typeof f();

把foo.bar存储给f然后挪用,以是this在foo.bar引用的是全局工具,以是就没有baz属性了
换句话说
foo.bar执行的时辰上下文是 foo,可是当 把 foo.bar 赋值给 f 的时辰,f 的上下文情形是 window ,是没有 baz 的,以是是 ”undefined"


                        

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读