首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在javascript中将代码作为函数参数传递吗?

问在javascript中将代码作为函数参数传递吗?
EN

Stack Overflow用户
提问于 2011-09-11 23:07:37
回答 4查看 4.2K关注 0票数 5

我正在尝试自己创建一个javascript框架(所以没有jquery,mootools...代码),我想让我的框架的代码只在框架函数中可访问,例如,类似于:

代码语言:javascript
复制
frameworkname({
//framework code here
});

因此,我的框架代码不会与其他框架冲突。我知道frameworkname({});是一个函数,但我不知道如何将代码作为函数参数传递。我知道这是可能的,因为我对jquery很有经验,而且jquery到处都有类似的东西(例如:$(document).ready(function(){//codehere});),但是jquery开发人员是如何做到这一点的呢?我希望能够为我的框架做到这一点。任何帮助都是非常感谢的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-11 23:11:13

函数是JavaScript中的第一类对象。您可以通过与字符串、数字、数组或任何其他数据类型相同的方式传递它们。

代码语言:javascript
复制
var foo = function () { alert(1); };
var bar = function (arg) { arg(); }
bar(foo);
票数 9
EN

Stack Overflow用户

发布于 2011-09-11 23:14:24

在javascript中,函数就是一个变量,就像你提到的代码:

代码语言:javascript
复制
$(document).ready( function () {//code});

实际上是声明了一个没有名称的函数,然后将其作为参数传递给"ready()“。因此,你的心智中的密码要以某种方式发挥作用

代码语言:javascript
复制
frameworkname( {} );

是非法的,因为"{}“是一个代码块,而不是任何类型的”变量“

票数 1
EN

Stack Overflow用户

发布于 2011-09-11 23:18:00

在JavaScript中,变量可以表示任何数据类型。因此,在function frameworkname( x ) { }中可以接受任何类型的参数(函数、对象、原语等)。

代码语言:javascript
复制
function frameworkname( x ) {
    if ( typeof x === "function" ) {
        x(); // function passed
    } else if ( typeof x === "object" ) {
        for ( var i in x ) {
           // Object passed
           x[i]();
        }
    }
}
frameworkname(function() {
    alert("function passed as argument");
});
frameworkname({
    hello: function() {
         alert("hello");
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7379106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档