我在http://www.somethinghitme.com/2013/11/11/simple-2d-terrain-with-midpoint-displacement/上看到了以下代码。
function terrain(width, height, displace, roughness, seed) {
var points = [],
// Gives us a power of 2 based on our width
power = Math.pow(2, Math.ceil(Math.log(width) / (Math.log(2)))),
seed = seed || {
s: height / 2 + (Math.random() * displace * 2) - displace,
e: height / 2 + (Math.random() * displace * 2) - displace
};
// ...
}
我不熟悉这种语法。它究竟实现了什么?这个赋值后,points变量包含什么?
答案 0 :(得分:2)
以下作品是Variable Statement,它允许显示多个声明,以逗号分隔。
var points = [],
// Gives us a power of 2 based on our width
power = Math.pow(2, Math.ceil(Math.log(width) / (Math.log(2)))),
seed = seed || {
s: height / 2 + (Math.random() * displace * 2) - displace,
e: height / 2 + (Math.random() * displace * 2) - displace
};
它与使用单个变量语句的处理方式相同,并且选择使用哪种形式是样式首选项。 (我选择后者,jslint建议前者。)
var points = [];
var power = Math.pow(2, Math.ceil(Math.log(width) / (Math.log(2))));
var seed = seed || {
s: height / 2 + (Math.random() * displace * 2) - displace,
e: height / 2 + (Math.random() * displace * 2) - displace
};
需要注意的一件有趣的事情是var seed = seed || ..
,其中seed
已经是一个参数。这是因为var
没有“定义”变量,就像在像C这样的语言中,而是声明应用范围范围的注释。因此,整个范围只有一个 seed
变量,var
再次使它没有区别 - 它一直是,并且将永远是一个局部变量。< / p>
请参阅What does "options = options || {}" mean in Javascript?以了解seed || ..
的使用情况。
答案 1 :(得分:0)
points变量是一个空数组。
答案 2 :(得分:0)
假设您指的是seed = seed || {
对象文字 }
,目的是在没有调用函数的情况下为seed
提供默认值该参数(或该参数未定义,或任何其他 falsy 值)。
如果存在seed,它将具有传入的值,但如果它未定义(或null,0,false等),则将为其提供一个对象。