5个可以帮你理解JavaScript核心闭包和作用域的小例子_javascript技巧

这里有5个小脚本,有助于你真正理解JavaScript核心–闭包和作用域。没有在控制台运行之前,尝试回答每个案例中会弹出什么内容,然后你可以创建一个测试文件去核对你的答案。你准备好了吗?

1、

复制代码 代码如下:

 if (!("a" in window)) {
     var a = 1;
 }
 alert(a);

2、

复制代码 代码如下:

 var a = 1,
     b = function a(x) {
         x && a(--x);
     };
 alert(a);

3、

复制代码 代码如下:

 function a(x) {
     return x * 2;
 }
 var a;
 alert(a);

4、

复制代码 代码如下:

 function b(x, y, a) {
     arguments[2] = 10;
     alert(a);
 }
 b(1, 2, 3);

5、

复制代码 代码如下:

 function a() {
     alert(this);
 }
 a.call(null);

我的预测答案分别是:undefined、1、不知道、10、null

答案在本文末尾,看答案之前,你敢留下你的猜测吗?

 

 

 

正确答案:1、undefined   2、1   3、function a(x){ return x * 2}   4、10  5、[object window]

时间: 2024-11-30 15:25:47

5个可以帮你理解JavaScript核心闭包和作用域的小例子_javascript技巧的相关文章

javascript检测页面是否缩放的小例子_javascript技巧

复制代码 代码如下: /* * zoomCheck */jQuery(function($){  var dCheck = $("#zoomCheck");  if(dCheck.size() != 0){    return;  }  dCheck = $("<span></span>").attr('id',"zoomCheck").css({    position :'fixed',    left : '5px'

JavaScript自动设置IFrame高度的小例子_javascript技巧

复制代码 代码如下: function SetIFrameHeight(down) {         var Sys = {};         var ua = navigator.userAgent.toLowerCase();         var s;         (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :         (s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox =

用Javascript来生成ftp脚本的小例子_javascript技巧

程序也很简单,就是遍历一下本地目录,然后产生一堆ftp命令. 复制代码 代码如下: function matchDemo(strFolderName) { var s; var re = /200\d{5}/ig; s = strFolderName.match(re): return(s): } function init() { strScript ="open 192.168.1.32 \n"; strScript+="user sybase 111111 \n&quo

深入理解JavaScript系列(4) 立即调用的函数表达式_javascript技巧

前言 大家学JavaScript的时候,经常遇到自执行匿名函数的代码,今天我们主要就来想想说一下自执行. 在详细了解这个之前,我们来谈了解一下"自执行"这个叫法,本文对这个功能的叫法也不一定完全对,主要是看个人如何理解,因为有的人说立即调用,有的人说自动执行,所以你完全可以按照你自己的理解来取一个名字,不过我听很多人都叫它为"自执行",但作者后面说了很多,来说服大家称呼为"立即调用的函数表达式". 本文英文原文地址:http://benalman

Javascript中this关键字的一些小知识_javascript技巧

Javascript应该是现在最流行的跨平台语言之一,一直在玩前端的一些有意思的东西,发现竟然没有掌握好这门语言.有点舍本逐末,于是想趁着现在这有空的时候好好补充一点遗漏的东西. this的隐性绑定 一开始这是我很迷惑的东西,刚开始看到的时候,不理解.而后,在相似的情况下,又能用类似的方法解决同样的问题.便试着理清这其中的知识,方便于查找. 这是一个Javascript语言上设计的错误,但是似乎这个错误是不可避免的,函数是对象,数组是对象等等.引用<Javascript: The Good Pa

javaScript 利用闭包模拟对象的私有属性_javascript技巧

JavaScript缺少块级作用域,没有private修饰符,但它具有函数作用域.作用域的好处是内部函数可以访问它们的外部函数的参数和变量(除了this和argument.内部中的函数中的this指向全局对象,argument指向内部函数的函数参数).我们可以利用这种属性来模拟面向对象中的私有属性. 复制代码 代码如下: var myObject=function(value){ var value=value || 0; return{ increment:function(num){ val

浅谈JavaScript 执行环境、作用域及垃圾回收_javascript技巧

执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为.每个执行环境都有一个与之关联的变量对象. 全局执行环境是最外围的一个执行环境.根据JavaScript实现所在的宿主环境不同,表示执行环境的对象也不一样.在Web浏览器中,全局执行环境被认为是window对象.因此,所有的全局变量和函数都是作为window对象的属性和方法创建的. 变量对象:环境中定义的所有变量和函数都保存在这个对象中. 作用域链:当代码在一个环境中执行时,会创建变量对象的一个作用域链.作用域链的用途是保证对执行环

基于JavaScript实现简单的随机抽奖小程序_javascript技巧

对于抽奖这样的小程序使用诸如VB,Delphi等工具来实现会比较的方便,由于本人机器上没有装这样的应用程序,所以只能另寻其道.为了使抽奖程序能够无需配置平台直接可以在任何一台机器上运行,开发工具和编译运行工具也能够经可能简单(诸如text文本即可编辑,window系统自带的浏览器即可编译运行的情况),决定尝试使用javascript来做.本人对javascript的研究不深,平时主要用于网站开发中对来自客户端的数据进行有效性判断(基于安全性的考虑,安全性要求高的网站尽量使用服务器端语言对数据有效

深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)_javascript技巧

适合的读者:有经验的开发员,专业前端人员. 原作者: Dmitry A. Soshnikov 发布时间: 2010-09-02 原文:http://dmitrysoshnikov.com/ecmascript/javascript-the-core/ 参考1:http://ued.ctrip.com/blog/?p=2795 参考2:http://www.cnblogs.com/ifishing/archive/2010/12/08/1900594.html 主要是综合了上面2位高手的中文翻译,