javascript笔试题(2)
来源:互联网 发布:南师大图书馆数据库 编辑:程序博客网 时间:2024/05/16 02:58
手动锚点 : javascript笔试题(1)
第七题
var foo = { bar: function(){ return this.baz; }, baz: 1 } typeof (f = foo.bar)();
结果:“undefined”
改写一下:
var foo = { bar: function(){ return this.baz; }, baz: 1 } f = foo.bar;typeof f();
foo.bar执行的时候上下文是 foo,但是当 把 foo.bar 赋值给 f 的时候,f 的上下文环境是 window ,是没有 baz 的,所以是 ”undefined”
测试一下
var foo = { bar: function(){ return this.baz; }, baz: 1 } f = foo.bar; console.log(typeof f()); console.log(typeof foo.bar());
附一只博文:谈谈Javascript的this指针
手贱,给f绑定上作用域试试
var foo = { bar: function(){ return this.baz; }, baz: 1 } f = foo.bar; console.log(typeof f.call(foo)); console.log(typeof foo.bar());
看出call的用途了。。
第八题
var f = (function f(){ return "1"; }, function g(){ return 2; })(); typeof f;
结果:“number”
var x = (1, 2, 3);
x;
x的值是3,这表明,当你有一系列的组合在一起,并由逗号分隔的表达式,它们从左到右进行计算,但只有最后一个表达式的结果保存。
改写一下:
var f = (function g(){ return 2; })(); typeof f;
好的啦。返回的是2,是个数字
第九题
var x = 1; if (function f(){}) { x += typeof f; } x;
答案:”1undefined“
上文引用的汤姆叔叔的文中提到,function如果是其他赋值语句的一部分,那么function是函数表达式,()包括的functioon也被看作函数表达式。
而函数表达式,长这样:
//[f]表示可以省略函数名字fa=function [f](){}
f不但可以省略,而且只在函数内部有意义,在函数外部就是undefined。
好吧不信我们测试一下:
所以既然f在外部没有定义,typeof f就返回 “undefined”字符串
1+=“undefined”表达式中1强转成字符串,与后面的字符串相连。结果就是 “1undefined”了。
第十题
(function f(){ function f(){ return 1; } return f(); function f(){ return 2; } })();
答案:2
函数声明提升。第二个函数声明把第一个声明覆盖了
第十一题
function f(){ return f; } new f() instanceof f;
答案:false
手贱改成这样子
function f(){ return f; }console.log(new f() === f);
结果:true
instanceof检测的是是不是属于某个类。
new f()返回了f,与f是相等的。所以instanceof返回false,===返回true
手贱,又改成这样子:
function f(){ return this; }console.log(new f() instanceof f);
结果:true
function f(){}console.log(new f() instanceof f);
结果:true
如果函数没有返回值,就返回this。this指向的是调用函数的执行上下文。
new操作都干了什么呢?
var obj = {};obj.__proto__ = Base.prototype;Base.call(obj);
第一行,我们创建了一个空对象obj
第二行,我们将这个空对象的proto成员指向了Base函数对象prototype成员对象
第三行,我们将Base函数对象的this指针替换成obj,然后再调用Base函数。
this指针此时指向了f()。instanceof查找原型链上有function f(){},所以返回true。
第十二题
var x = [typeof x, typeof y][1];typeof typeof x;
结果:”string”
改写一下就是
var x=typeof y;var res=typeof x//"undefined"typeof res//typeof "undefined" --"string"
只要知道typeof返回的是字符串就好啦
题目十三
function(foo){ return typeof foo.bar; })({ foo: { bar: 1 } });
结果:“undefined”
改写
var x={foo:{bar:1}};return typeof x.bar;
x没有bar属性 ,返回undefined。
- javascript笔试题(2)
- Javascript数据类型(笔试题)
- (摘录)javascript笔试题
- javascript笔试题(1)
- javascript笔试题(3)
- javascript笔试题(5)
- 最新JavaScript笔试题(含答案)
- javascript笔试题(4) js模板
- javascript笔试题(6) js 数组
- javascript笔试题(8) 继承
- 美团笔试题(JavaScript)
- 最新JavaScript笔试题(含答案)
- JavaScript笔试题(持续更新)
- JavaScript笔试题
- 笔试题目2(HTML+CSS+JavaScript)
- 关于一道javascript笔试题
- 简单的JavaScript笔试题
- javascript 必背笔试题
- POJ 3132 Sum of Different Primes
- 反射详解
- 将源目录中的文件按照前缀分发到不同目录中的算法设计及C代码实现
- 微信公众号第三方平台开发PYTHON教程 PART 3
- @property 和@synthesize
- javascript笔试题(2)
- 【POJ 2398】Toy Storage(计算几何)
- 声学特征(四) pitch-yin代码实现
- Core Data入门
- 【EF系列】EntityFrameWork实体关系映射
- [SDOI2016]sequence 解题报告
- 微信公众号第三方平台开发PYTHON教程 PART 4
- MyApplication
- scaleType