this指向问题,谁调用它,它就指谁!!!

1、var foo = 1;

function bar() {

foo = 10;

return;

function foo() {}

}

bar();

alert(foo);

  • A  1
  • B  10
  • C  Function
  • D  undefined
  • E   Error

2、var x = 3;

var foo = {

x: 2,

baz: {

x: 1,

bar: function() {

return this.x;

}

}

}

var go = foo.baz.bar;

alert(go());

alert(foo.baz.bar());

  • A   1,2
  • B   1,3
  • C   2,1
  • D   2,3
  • E    3,1
  • F    3,2

3.

var arr = [];

arr[0]  = 'a';

arr[1]  = 'b';

arr.foo = 'c';

alert(arr.length);

  • A   1
  • B   2
  • C   3
  • D   undefined

4、

var foo = 1;

function bar() {

foo = 10;

return;

}

bar();

alert(foo);

5、

var foo = 1;

function bar() {

//下面这段代码,可能就是声明了一个局部变量foo=10;函数先声明提前,然后赋值,

foo = 10;
alert(foo);

return;

function foo() {}

}

bar();

  

关于问题1:难道一执行函数,里面的申明会再次置顶。

http://www.cnblogs.com/bugda/p/6036282.html

JS中变量名和函数名重名

 

var a=100;
function a(){
  console.log(a);
}
a();

这个串代码执行完会报错 : a is not a function

问题来了,为什么会报这个错误呢?  这里涉及到函数和变量的预解析:

1)函数声明会置顶
2)变量声明也会置顶
3)函数声明比变量声明更置顶:(函数在变量上面)
4)变量和赋值语句一起书写,在js引擎解析时,会将其拆成声明和赋值2部分,声明置顶,赋值保留在原来位置
5)声明过的变量不会重复声明

知道以上的规则,上面的代码等同于 :

var a=function (){
  console.log(a);
}
var a=100;
a();

相当于给a重新赋值了,所以会报错.

链接:http://www.jb51.net/article/55200.htm

函数定义表达式
var fns = function (){
// ...
};
// 函数声明语句
function fns(){
// ...
}

函数声明语句“被提前”到外部脚本或外部函数作用域的顶部,所以以这种方式声明的函数,可以被再它定义之前出现的代码所调用。而函数定义表达式中,变量的声明被提前了,但是给变量的赋值是不会提前的,所以,以表达式方式定义的函数在函数定义之前无法调用。

最新文章

  1. (实例篇)php 使用redis锁限制并发访问类示例
  2. org.openqa.selenium.remote.SessionNotFoundException: Unexpected error launch IE
  3. VS web项目 基于IIS调试和模拟域名调试
  4. GPS部标平台的架构设计(六)-Android手机客户端和手机查车设计
  5. NO.3 CAS配置问题汇总
  6. 【Android测试】【随笔】与 “58同城” 测试开发交流
  7. Mapreduce之序列化框架(转自http://blog.csdn.net/lastsweetop/article/details/9376495)
  8. mac os 下如何清除/切换svn eclipse插件的用户
  9. 序列化魔术函数__sleep()和反序列化魔术函数__wakeup()
  10. UICollectionView reloadData后cell被隐藏
  11. Eclipse:使用findBugs预先检测错误
  12. OSG显示文字——自定义显示文字函数
  13. qt4.8.4安装以及64位程序编译方法
  14. 6.4 Schema 设计对系统的性能影响
  15. vue里如何灵活的绑定class以及内联style
  16. C++关于string的一些用法
  17. Go 初体验 - 反射
  18. 潭州课堂25班:Ph201805201 django框架 第四课 模板常用标签,模板继承与引用,自定义过渡器 (课堂笔记)
  19. 33.MySQL高可用架构
  20. Day1 Python基础学习——概述、基本数据类型、流程控制

热门文章

  1. isEmpty和isBlank的区别
  2. 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 3
  3. 关于c#在DataTable中根据条件删除某一行
  4. Firebug调试js代码
  5. Linux应用程序基础
  6. 交易系统使用storm,在消息高可靠情况下,如何避免消息重复
  7. div仿textarea使高度自适应
  8. 拖拽手势和清扫手势冲突时(UIPanGestureRecognizer和UISwipeGestureRecognizer冲突时)
  9. 多站点配置apache服务器
  10. 在项目中使用ExtJS