变量不在布尔值中

时间:2018-03-04 15:33:43

标签: javascript function variables

var colors = generateColors();
var squares = document.querySelectorAll(".squares");
var colorDisplay = document.querySelector("#colorDisplay");
var pickedColor = pickColor();
var numSquares = 6;

assignColors();

function assignColors(){
    for (i = 0; i < numSquares; i++){
        squares[i].style.backgroundColor = colors[i];
    }
};

function generateColors(){
    //Create arr
    var arr = [];
    //Create Colors and Push Them to arr
    for (var i = 0; i < 6; i++){
        //Create Colors
        var r = Math.floor(Math.random() *256);
        var g = Math.floor(Math.random() *256);
        var b = Math.floor(Math.random() *256);
        var color = "rgb(" + r + ", " + g + ", " + b + ")";
        //Push to arr
        arr.push(color);
    };
    //Return arr
    return arr;
};


function pickColor(){
    //Create Random Number
    var random = Math.floor(Math.random() * 6);
    //Display Color
    colorDisplay.textContent = colors[random];
    //Return Picked Color
    return colors[random];

};

所以我想使用变量numSquares,因为它在我的代码中更实用。但它只适用于函数assignColors()。我想用numSquares替换其他两个函数中的6,但它不起作用。

2 个答案:

答案 0 :(得分:1)

在为变量generateColors()指定值之前,您正在调用pickColor()numSquares,因此其他函数由于提升的工作原因尚不知道该值。将变量移动到第一行,它应该工作。

var numSquares = 6;
var colors = generateColors();
var squares = document.querySelectorAll(".squares");
var colorDisplay = document.querySelector("#colorDisplay");
var pickedColor = pickColor();

另外,我不确定这个变量是如何与布尔值相关的。在我看来,在generateColors()assignColors()中,它作为条件运行,然后在pickColors()中作为一个数字。然后你从这些函数返回除布尔值之外的东西。

答案 1 :(得分:0)

这是因为在numSquare获取赋值之前调用generateColors()和pickColors()。 Javascript执行提升,一旦它通过整个代码将变量,对象或函数分配给范围,但随后它逐行解释并分配值。