9 个回答

不知道你期望得到的是什么结果.
如果是字符串的话, y += Math.random() * 16就可以.
如果需要得到数组, y.push(Math.random() * 16)就可以.
上面报错的原因是 += 操作以后y变成了字符串, 失去了数组的push方法.

clipboard.png经过这一步之后y已经变成一个字符串了 没有push方法

y+=y.push

数组做数值操作之后已经不返回数组了,肯定没有push方法了

数组的push方法返回的是数组的长度不是一个数组。

y += y.push(dict[x]); //相当于
y += dict[x].length + 1;  //这句话操作完之后y已经不是一个数组了,所以再次循环找不到push方法

y += y.push()
等号右边就是数组,那你[]+[]第二次就成字符串了
第三次 字符串+[] 不就直接报错了么

y += y.push(dict[x]); console.log(typeof y)
这里操作后 y 成 string 类型了。

看你获取随机颜色的代码 帮你写了一个, 你看行不行
("000000" + (~~(Math.random()*16777215)).toString(16)).slice(-6);

Math.random()*16777215)//随机0-ffffff 16777215是ffffff的10进制
双波浪线 ~~ 操作符也被称为“双按位非”操作符,可用于取整
前面加0是为了补全不够6位的情况

不用y+; y.push(x)就可以

获取随机颜色。

function getColor() {
    return Math.random().toString(16).substring(2, 8);
}

另外,你可以console.log(y) 看看y是什么,或者使用 typeof y 来判断类型。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题