So, you think you know JavaScript?
2014-04-15 12:25
405 查看
Baranovskiy
参考:http://dmitry.baranovskiy.com/post/91403200
题目一:
答案:undefined
关键点:js的所有变量自动提前声明
全局变量挂载在window下
题目二:
答案:1
关键点:函数声明与函数表达式的区别;
函数声明会覆盖变量声明但不会覆盖变量赋值;
声明的函数名与函数表达式的别名优先放在函数的作用域中;
其他:执行b(2)得到3
延伸:
a依然是1,a(2)会报错“TypeError: number is not a function”
补充:解析时先提前声明后赋值,函数声明覆盖变量声明
再延生:
执行a(2)得到3,a++得到NaN,
将var a;移到最后依然得到同样的结果。
题目三:
答案:[object Window]、[object Object]
关键点:call的this指定功用
null将被无视,同样的还有undefined
参考:http://dmitry.baranovskiy.com/post/91403200
题目一:
if (!("a" in window)) { var a = 1; } alert(a);
答案:undefined
关键点:js的所有变量自动提前声明
全局变量挂载在window下
题目二:
var a = 1, b = function a(x) { return x && (x + a(--x)); }; alert(a);
答案:1
关键点:函数声明与函数表达式的区别;
函数声明会覆盖变量声明但不会覆盖变量赋值;
声明的函数名与函数表达式的别名优先放在函数的作用域中;
其他:执行b(2)得到3
延伸:
var a = 1; function a(x) { return x && (x + a(--x)); };
a依然是1,a(2)会报错“TypeError: number is not a function”
补充:解析时先提前声明后赋值,函数声明覆盖变量声明
再延生:
var a; function a(x) { return x && (x + a(--x)); };
执行a(2)得到3,a++得到NaN,
将var a;移到最后依然得到同样的结果。
题目三:
function a() { alert(this); } a.call(null);a.call({});
答案:[object Window]、[object Object]
关键点:call的this指定功用
null将被无视,同样的还有undefined
相关文章推荐
- JavaScript判断浏览器类型及版本
- 后台转换JSON格式。ToJson
- JSON格式
- JavaScript中Browser 对象
- jsb 自动绑定
- 给大家推荐一款高大上的代码高亮插件(sublime,github风格)——highlight.js
- JS【JS时分秒时间控件】和js 折扣控件
- JavaScript:避免代码的重复执行
- 给大家推荐一款高大上的代码高亮插件(sublime,github风格)——highlight.js
- javascript对象之 selectionStart selectionEnd
- 开源的HTML5和JavaScript框架
- 如何使用jstl标签实现阶乘
- jsDevToo--js开发调试工具库
- jsDevToo--js开发调试工具库
- JavaScript简介
- Ext.net中如何使用Extjs代码
- C# 将对象序列化为Json格式
- Flex应用程序转化为jsp程序—饼状图
- javascript字符串处理
- JavaScriptCore框架在iOS7中的对象交互和管理教程