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
希望对您有所帮助
我在 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
希望对您有所帮助