0 0

关于javascript回调,请问这两段代码有什么区别?10

var singleton = function(fn) {    
        var result;    
        return function() {   
            return result || (result = fn.apply(this, arguments));    
        }
    } 
var createMask = singleton(function() { 
    return document.body.appendChild(document.createElement('div'));  
});
createMask();

var singleton = function(fn) {    
        var result;    
        return function() {   
            return result || (result = fn());    
        }
    } 
var createMask = singleton(function() { 
    return document.body.appendChild(document.createElement('div'));  
});
console.log(createMask());

区别在于:fn()和fn.apply(this, arguments);
结果都是一样..
能不能说下具体什么原因?
2012年11月21日 01:18

3个答案 按时间排序 按投票排序

0 0

fn.apply(this, arguments)
相当于:
1 在singleton 这个函数对象内部有一个函数

function(param) {
     alert('function param:'+param);
 
    return document.body.appendChild(document.createElement('div'));
  
}


2 在singleton 内部调用上面的方法。在这这个例子中,arguments实际上没有起到作用。

2012年12月05日 11:52
0 0

我收藏的,你看一下,
http://www.cnblogs.com/fighting_cp/archive/2010/09/20/1831844.html

2012年11月22日 15:00
0 0

fn.apply(this, arguments));的作用是使用指定对象替换当前对象然后调用函数,this就是当前的对象,也就是再调用一次fn()函数,arguments是参数数组,正如fn()函数本身就有默认参数数组一样所以 和调用fn())是一样的,建议去看一下apply()函数的作用;      

2012年11月21日 11:20

相关推荐

    理解和使用 JavaScript 中的回调函数

    在这个例子中,回调函数接收两个参数:当前元素 `eachName` 和元素索引 `index`。每当 `forEach` 方法处理数组中的下一个元素时,就会调用这个回调函数。 #### 三、回调函数的实现原理 **1. 参数传递:** 当我们把...

    android JS与java代码相互调用

    - 一个HTML文件,内含JavaScript代码,用于调用Java接口和接收Java的回调。 - 可能还有其他辅助类或资源文件,帮助演示完整的交互流程。 这个Demo将帮助开发者理解如何在Android应用中实现在JS和Java之间进行有效...

    关于javascript 回调函数中变量作用域的讨论

    ### JavaScript回调函数中变量作用域解析 #### 一、引言 JavaScript作为一种广泛使用的脚本语言,其灵活性和强大功能使其成为Web开发不可或缺的一部分。在JavaScript编程中,回调函数是一种非常重要的概念,尤其是...

    JavaScript异步回调 then.js.zip

    JavaScript异步回调是编程中的一个核心概念,尤其是在Web开发中,因为JavaScript是单线程的,这意味着它不能同时执行多个任务。为了解决这个问题,异步编程被引入,以允许在执行其他操作的同时处理耗时的任务,如...

    JavaScript回调(callback)函数概念自我理解及示例

    然而,回调函数也存在一些问题,比如回调地狱(Callback Hell),这是由于多层嵌套的回调导致的代码难以理解和维护。为了解决这个问题,JavaScript社区发展出了Promise和async/await等更高级的异步处理方式,这些...

    asp.net 客户端回调

    `GetCallbackEventReference`方法是ASP.NET客户端回调的一部分,它用于生成一个JavaScript回调函数调用的引用。这个函数的返回值是一个字符串,包含了客户端可以调用来执行服务器端回调的完整JavaScript代码。通常,...

    JavaScript学习(一)

    6. **异步编程**:在JavaScript中,异步编程是常见的处理I/O操作和网络请求的方式,如回调函数、Promise和async/await。这些机制避免了程序因等待资源而阻塞,提高了用户体验。 7. **ES6及更新版本的新特性**:自...

    Android-为WebView中的Java与JavaScript提供安全可靠的多样互通方案

    JavaScript桥接库接收到这段代码后,解析结果并执行对应的回调函数。 5. **错误处理**:在Java和JavaScript两端都要实现良好的错误处理机制,确保在出现异常时能够正确地通知对方。 通过这样的方式,我们可以在...

    javascript 秒表计时器实现代码

    此外,这段代码还展示了如何使用JavaScript操作DOM,包括获取页面元素、绑定事件处理器以及更新元素内容等。这些是JavaScript进行网页交互的基础技能。 通过本示例代码的学习,我们可以了解到如何利用JavaScript...

    查找并修复JavaScript代码中的问题.zip

    这个名为"查找并修复JavaScript代码中的问题.zip"的压缩包显然提供了关于如何诊断和解决这些常见问题的资源。它包含两个文件:一个说明文本(说明.txt)和一个可能包含了用于代码检查工具的eslint_main.zip。 ...

    asp.net 2.0使用ajax实现客户端回调功能详解

    这段代码定义了一个名为`CallServer`的函数,用于触发回调事件,其中`arg`和`context`作为参数传递给服务器。 - 服务器端处理回调的代码: ```csharp bool IHttpHandler.IsReusable { get { return true; } } ...

    JavaScript 参考手册集合 chm版打包

    此外,JavaScript还有作用域、闭包、原型链、事件处理、异步编程(回调函数、Promise、async/await)等高级主题。学习这些内容可以帮助开发者深入理解JavaScript的运行机制,并提升编写高效代码的能力。 在提供的...

    Selenium Core实例所用的JavaScript代码

    如果存在编辑器并且有定义的回调函数,则调用这个回调函数;否则,回退到原始的`post`方法,确保测试结果能够被正确记录和处理。 3. **获取基础URL:** ```javascript HtmlTestRunnerControlPanel.prototype....

    javascript经典特效---纯JavaScript时钟.rar

    创建时钟的关键在于使用`setInterval()`函数来定时执行一段代码。这个函数接受两个参数:一个函数引用和一个时间间隔(以毫秒为单位)。例如,每秒更新一次时间,我们可以这样写: ```javascript setInterval...

    callback_function:深入了解带有代码段的回调

    深入了解带有代码段的回调 定义: •回调是要在另一个功能执行后执行的功能。 •在JavaScript中,函数是对象。 因此,函数可以将函数作为参数,并可以由其他函数返回。 执行此操作的函数称为高阶函数。 作为参数...

    javaScript编码规约 coding rules and conventions

    - 避免回调地狱,利用Promise链式调用来组织异步流程。 10. **类型检查** - 尽可能使用静态类型检查工具,如TypeScript,以提高代码的健壮性。 - 在需要时进行类型转换,避免隐式转换导致的问题。 综上所述,...

    JavaScript语法手册.rar

    异步编程主要通过回调函数、Promise和async/await来实现,解决了JavaScript中的"回调地狱"问题。 JavaScript还提供了丰富的内置对象,如Math、Date、Array、String等,提供了许多实用的工具方法。另外,JavaScript...

    UIWebView与 javascript的交互

    这个方法允许我们在运行时执行一段JavaScript代码,并在完成时得到回调,可以获取到JavaScript执行的结果或者处理可能出现的错误。 2. `- (void)stringByEvaluatingJavaScriptFromString:(NSString *)script;` 这...

    JavaScript 图片闪烁代码.rar

    这段代码会每半秒钟切换一次图片的源,从而产生闪烁效果。 5. **CSS结合使用**:除了JavaScript,我们还可以利用CSS的`animation`属性来创建更复杂的闪烁效果。例如,创建一个关键帧动画: ```css #...

Global site tag (gtag.js) - Google Analytics