我对Javascript很新,对某些事感到困惑。为什么命令“println(”...“);不能被称为变量,如:var num = println(”...“);.我可能是错的,如果你能够,我我很乐意知道如何。但经过一些测试后,似乎我不能。我的测试代码是:
function start() {
var SENTINEL = "1 1";
var rollOne = Randomizer.nextInt(1, 6);
var rollTwo = Randomizer.nextInt(1, 6);
var num = println(rollOne + rollTwo);
if(num == SENTINEL) {
println("You did it");
}
}
所有它应该做的是给##形式的随机数,如果它看到数字是1,1,它将给出一个消息。它不会给出消息,似乎无法将变量“num”视为实际变量。但是,当我更改变量num以简单地询问用户输入数字时:
function start() {
var SENTINEL = -1;
var rollOne = Randomizer.nextInt(1, 6);
var rollTwo = Randomizer.nextInt(1, 6);
var num = readInt("Enter number");
if(num == SENTINEL) {
println("You did it");
}
} 并输入-1,它会触发标记,从而及时显示消息。这是一个非常迂回的方式来问一个简单的问题,但我希望我能得到一些帮助。谢谢:))
答案 0 :(得分:1)
为什么命令" println(" ...");被称为变量,如:var num = println(" ..."); [...]它不会给出消息,似乎无法查看变量
如果返回的值不可用,则很可能是undefined
;即函数println
没有明确地返回任何内容。
在你的情况下,你可以尝试这样的事情:
var printInt = function(num) { println(num); return num; }
注意,println
不是标准JavaScript语言的一部分。对于现代Web浏览器,它可以适应使用(console.log(...)
)。
var printInt = function(num) { console.log(num); return num; }
然后适应你的代码:
var num = printInt(rollOne + rollTwo);
但是这仍然无法验证,因为您正在与"1 1"
进行比较,而您的逻辑将返回2
。 JavaScript(以及许多其他语言)在提供两个数字时隐式使用addition,但在提供至少一个字符串时使用连接。
var SENTINEL = "1 1"; // <---- String!
var SENTINEL = -1; // <---- Number!
所以你应该考虑这样的事情(相应地重命名):
var printRolls = function(text) { println(text); return text; }
var rolls = printRolls(rollOne + " " + rollTwo);
if(rolls == SENTINEL) {
println("You did it");
}
或者简化一下:
if(printRolls(rollOne + " " + rollTwo) == SENTINEL)
println("You did it");
答案 1 :(得分:0)
println
可能无法返回传入的字符串。在这种情况下,您可以使用
if (SENTINEL === rollOne + " " + rollTwo)
格式化字符串并正确测试相等性。
答案 2 :(得分:0)
在JavaScript中,可以将任何函数的返回值赋给变量,类似于你完成它的方式:
var anyVariable = anyFunction();
但,某些函数返回值undefined
。或者他们返回一个数字,或数组,或......等等。
我想你的println()
函数会打印你传递给它的值(在屏幕上?到控制台?),然后返回undefined
。或者,如果它返回打印值,则其格式与您在SENTINEL
变量中使用的格式不同。那么当你尝试将其与SENTINEL
进行比较时,它就不会相等。
要修复原始功能,请将滚动总和分配给变量,然后打印并测试:
function start() {
var SENTINEL = 2;
var rollOne = Randomizer.nextInt(1, 6);
var rollTwo = Randomizer.nextInt(1, 6);
var num = rollOne + rollTwo;
println(num);
if(num == SENTINEL) {
println("You did it");
}
}
编辑:如果您希望println()
显示类似"1 1"
或"3 5"
的字符串,以显示两个卷中的每一个,那么请执行以下操作:
println(rollOne + " " + rollTwo);
也就是说,创建一个新字符串,该字符串是将rollOne
的值与单个空格连接,然后是rollTwo
的值的结果。