js笔试题
2015-08-18 17:14
489 查看
f = function() {return true;}; g = function() {return false;}; (function() { if (g() && [] == ![]) { f = function f() {return false;}; function g() {return true;} } })(); console.log(f());
分析以上代码,结果为false.
函数定义的两种形式:
(1)var a = function(){}
这种只能先声明后调用
(2)function a(){}
这种可以先调用后声明
所以if中的g()在自己匿名函数的作用域中先找到
function g() {return true;}
然后[] == ![]解释:typeof []-->object类型但是空,![]-->Bealean类型是false,所有的空或0都是false.false==false返回true
最后进入if(true)后,改变了全局的f变量,所以返回的是false.
相关文章推荐
- 圆周运动js
- JS图片的放大与缩小
- JavaScript 对象
- 滚动条滚动事件 js
- 关于JS堆栈与拷贝
- 学习zepto.js(对象方法)[3]
- 省市区三级联动JS
- javascript
- 百度地图JS调用示例
- js中对Ajax使用解析与重构
- javascript函数 第14节
- JS学习十九天----组合模式
- Javascript实现瀑布流
- Javascript中的DOM实现显示鼠标的空间位置
- js实现带有介绍的Select列表菜单实例
- javascript学习笔记(一)-廖雪峰教程
- pjsip_iphone(1)初探
- javascript 模式(2)——单例模式
- js 个人整理的兼容性代码
- javascript +.net 构建restful API 应用