JavaScript 方法传递参数

JavaScript method passing parameters

我在 8 年前使用过 dojo,所以我对 dojo 1.7+ 非常陌生。我想定义一个带参数的方法,但它对 dojo 模块(lang)也有要求。所以我尝试了以下。

 <script>
    function fillReportTable(repId) {
        require(['dojo/_base/lang'], function(lang) {

             //just example calls to lang..
             var obj = { a:"b", c:"d" };
             var thing = lang.clone(obj);
            repId = repId + 1;
        });

        return repId;
    };

    alert(fillReportTable(13))
</script>

但是 alert(fillReportTable(13)) 显示了整个函数定义而不是数字 14。我错过了什么?

如果您要使用 dojo,那么 几乎所有东西 都需要是 AMD module,可能只是一点点 vanilla Javascipt。所以,你可以把你的函数变成一个 AMD module 并且很容易

myApp/fillReportTable.js

define(['dojo/_base/lang'],function (lang) 
{                
    return function fillReportTable(repId) {
        var obj = { a:"b", c:"d" };
        var thing = lang.clone(obj);
        return repId + 1;
    }
}); 

那么,你可以require

require(["myApp/fillReportTable"], function(  fillReportTable )
{
    console.log(fillReportTable(123));
});

但是如果你继续你的方法,那么你可以使用 Promise

来解决它
function fillReportTable(repId){
   return new Promise(function(resolve){
        require(['dojo/_base/lang'],function (lang){                
            var obj = { a:"b", c:"d" };
            var thing = lang.clone(obj);
            resolve(repId + 1);
        });
   });  
};

如何使用

fillReportTable('Hello World').then(function(repId){
    console.log(repId);
});

请注意 Promise 是一个 ECMAScript6 feature

希望对您有所帮助