ECMAScriptjavascript ES3多少测试

一律、温故知新

做做题,总是能生温故知新的体会。这套书是2010年之了,比较一直了,

http://perfectionkills.com/ 
还有一样法http://perfectionkills.com/javascript-quiz-es6 比较新ES6相关的。

当斯页面有14道ECMAScript相关的题,我尝试了生报错了6道题,有些知识,感觉着见面了,别人说出去肯定能清楚,但是自己做题却休肯定对,就是盖掌握的尚不够深刻,或者记忆差等,下面来分析一下。

ECMAScript 1

 

第二、分析一下各个道题的考点与法则

切莫见面拿每个知识点都详细讲解,有些是沾到结束,有些会于来参考链接。

1、考点:typeof和arguments

(function(){
    return typeof arguments;
  })();

ECMAScript 2ECMAScript 3

解析:typeof返回值有”string”/”number”/”undefined”/”boolean”/
“function”/”object”。询问再多。

若是arguments是一个类数组,并无是真正的再三组,所以格外强烈是typeof返回值是”object”。问询又多

2、考点:命名式函数表达式NFE【我答错了】

 var f = function g(){ return 23; };
 typeof g();

ECMAScript 4ECMAScript 5

浅析:var f=function g(){} 是一个命名函数表达式(NFE)。

typeof g()返回g函数调用后底结果的typeof值。

于打算域链上找g这个变量时根本找不至,所以会报错:g is not a function。

之所以是答案就是是D了。

专业规定:命名函数表达式名字(标识符)在函数体的作用域内立竿见影,且无能够被遮盖。问询又多

3、考点:delete【我报错了】

  (function(x){
    delete x;
    return x;
  })(1);

ECMAScript 6ECMAScript 7

IIFE对应的变量对象及闹一个x值为流传的1,相当于是var声明的,所以是不克被delete掉的。

delete x返回false。return x返回的价值还是1.

ECMAScript 8

就此对答案是1

纪事一点:delete运算符不能够去除变量,不克去参数,用来删除对象上configurable为true的属于性
摸底又多

4、考点:变量声明,执行上下文

 var y = 1, x = y = typeof x;
 x;

ECMAScript 9ECMAScript 10

分析:var y=1,x=y=typeof x;相当于

第一步:y=undefined,x=undefined;

第二步:typeof
x返回“undefined”字符串,把这字符串赋值给y变量,然后赋值给x变量,所以最终x和y的价值都是字符串“undefined”。刺探再多

5、考点:优先级

(function f(f){
    return typeof f();
 })(function(){ return 1; });

ECMAScript 11ECMAScript 12

 

剖析:函数调用()优先级比 typeof优先级赛

IIFE中传入参数是一个函数,调用后,先实施这个函数,得到结果数字1, typeof
1返回”number”所以答案就是”number”。刺探再多

6、考点:this

  var foo = {
    bar: function() { return this.baz; },
    baz: 1
  };
  (function(){
    return typeof arguments[0]();
  })(foo.bar);

ECMAScript 13ECMAScript 14

 

分析:

foo是一个目标,对象中有一个性质baz,一个方bar。在IIFE中传入一个参数foo.bar,foo.bar是一个函数,

调用的当儿,函数先实行,返回一个this.baz。此时this指于window对象,window.baz不在,所以返回undefined,而typeof
undefined返回”undefined”。摸底又多

7、考点:this

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

ECMAScript 15ECMAScript 16

 

拿foo.bar属性赋给f,此时f是一个函数,调用后this执向window,window.bar不在,返回undefined,typeof
undefined返回“undefined”。

8、考点:逗号运算符【我答错了】

var f = (function f(){ return "1"; }, function g(){ return 2; })();
typeof f;

ECMAScript 17

ECMAScript 18

当即道题考察的是逗号运算符。

f是一个立马施行之表达式,逗号表达式的值是终极一个表达式既function
g(){},所以马上调用g函数返回2,typeof 2就是“number”。

逗号表达式会从左到右依次计算表达式的价值,最后得到最好右面边的。了解再多

自拿逗号运算符取值记成左边了,所以答错了。

9、坑【我报错了】

var x = 1;
  if (function f(){}) {
    x += typeof f;
  }
  x;

ECMAScript 19ECMAScript 20

剖析:function
f(){}是独变量声明,我们平素勾勒代码不可能拿一个函数声明放到if语句中,但是测试一下if中加大一个函数声明的言辞条件也真正内容是会见实施之。

ECMAScript 21

使typof f去查找f的时候,在其的作用域中找不顶,所以typeof
f返回”undefined”字符串,所以x+=”undefined”最终x的价值就是”1undefined”。

10、考点

var x = [typeof x, typeof y][1];
typeof typeof x;

ECMAScript 22

解析:typefo返回的自我就是是单字符串,再来平等次typeof肯定”string”。这是独对取巧的想。

 

11、

(function(foo){
    return typeof foo.bar;
  })({ foo: { bar: 1 } });

ECMAScript 23ECMAScript 24

 

剖析:IIFE中传入一个对象字面量有一个属性foo,foo的价是一个含有一个bar属性的靶子。调用时,获取参数对象吃之bar属性,并没有此特性,所以返回undefined,typeof
undefined返回“undefined”。

12、考点:函数声明预解析【我答错了】

(function f(){
    function f(){ return 1; }
    return f();
    function f(){ return 2; }
  })();

ECMAScript 25ECMAScript 26

即时执行之f函数里面,在变量声明等声明一个f值是一个函数声明,被后的函数声明覆盖了,所以是f的价是function
f(){return 2;}

自家记错了,变量声明等函数的声明直接就赋值了,所以答案就是是2。刺探又多

13、考点:instanceof【我报错了】

 function f(){ return f; }
 new f() instanceof f;

ECMAScript 27

构造函数function f(){

return f;//返回值是f,作用域链向上查找,能找到f=>function f(){return
f;} 因为f不是主导项目,所以会见返回f。

}

于是new f()调用的结果是f函数本身。所以现在问题就是变成了f instanceof
f是true还是false。

ECMAScript 28

function
A(){}是Function的实例,A的原型链上找不至A.prototype属性,所以instanceof返回false。

ECMAScript 29

刺探再多

14、考点:with语句

with (function(x, undefined){}) length;

ECMAScript 30

剖析:相当给得with中匿名函数的其实参数的个数

 

 

正文作者starof,因知本身在变,作者为当时时刻刻学习成才,文章内容也不安时更新,为避免误导读者,方便追根溯源,请各位转载注明出处:http://www.cnblogs.com/starof/p/6816474.html发出题目欢迎和己谈谈,共同进步。