Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chrome上的Math.random()javascript函数*未定义*_Javascript_Jquery_Html_Google Chrome - Fatal编程技术网

Chrome上的Math.random()javascript函数*未定义*

Chrome上的Math.random()javascript函数*未定义*,javascript,jquery,html,google-chrome,Javascript,Jquery,Html,Google Chrome,首先,我确信这是一个微不足道的问题,但我无法理解为什么会发生这种情况,我在其他任何地方都找不到答案。我在谷歌上搜索了我的问题,但几乎没有成功,但是如果我错过了什么,只是浪费了你的时间,请给我指出正确的方向,接受我卑微的借口 这就是说,发生了什么。我正在构建一个简单的脚本来显示由分布式算法(giraph)绘制的图形,我正在Linux上工作。我导入了所有的库,尤其是jQuery和Firefox(36.0.1版)中的所有功能。切换到Chrome(版本41.0.2272.89(64位)),页面停止工作。

首先,我确信这是一个微不足道的问题,但我无法理解为什么会发生这种情况,我在其他任何地方都找不到答案。我在谷歌上搜索了我的问题,但几乎没有成功,但是如果我错过了什么,只是浪费了你的时间,请给我指出正确的方向,接受我卑微的借口

这就是说,发生了什么。我正在构建一个简单的脚本来显示由分布式算法(giraph)绘制的图形,我正在Linux上工作。我导入了所有的库,尤其是jQuery和Firefox(36.0.1版)中的所有功能。切换到Chrome(版本41.0.2272.89(64位)),页面停止工作。在调查该问题时,我发现错误在jQuery库的
jQuery.extend()
函数中,位于以下行:

expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
ticks += "," . Math.floor(yyy * intMax);
事实上,试图在浏览器控制台中调用
Math.random()
,会导致:

> Math.random();
> Uncaught TypeError: Undefined is not a function
无论如何,键入console时,会自动完成“Math”变量,结果如下:

> Math
> function (){return "";}
MacOS X Mavericks上的Chrome不会出现这种情况。以前有人经历过这种行为吗

编辑:不幸的是,我不认为这是名称空间冲突。在我的库中,我只导入另一个库(jQuery除外),即。正如所建议的,我在控制台中编写了Math,并试图了解哪个库重写了Math(使用“Show Function Definition”),结果如下,取自一个名为“VM53”的文件(我没有直接编写和/或链接)


页面上的另一个库正在覆盖
Math
对象。这是不赞成污染全局名称空间的原因之一

参考
Math
应返回以下内容


某些内容覆盖了代码中的数学

在chrome控制台中执行
Math
。在其上执行上下文菜单并选择“显示函数定义”。这可能会引导您进入“源代码”面板,并显示覆盖它的脚本


编辑:这是名为
notscripts
的chrome扩展。禁用它。以下是证明的源代码:

我发现了另一种可能导致这种情况发生的情况。我正在将PHP函数转换为JS函数,我有以下几行代码:

expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
ticks += "," . Math.floor(yyy * intMax);
改成

ticks += "," + Math.floor(yyy * intMax);

通过某种方式解决了这个问题,NotScript自动安装在Ubuntu 16.04上的我的Chrome浏览器中。在
标记之后插入更新中显示的脚本

我必须进入设置,查看扩展,禁用NotScripts,然后重新启动Chrome,直到它消失

在Ubuntu上,这一定是最近的,或者脚本最近更新了,因为几天前我用完全相同的脚本在Chrome上运行了完全相同的测试,并且运行得很好


有趣的是,它看起来像是(2014年11月),最近可能重新添加?

这确实很有趣:)一些脚本覆盖了
Math.random
。尝试从页面中删除其他
标记,看看是什么导致了错误。或者Chrome扩展由于某种原因禁用了
Math
。如果你在匿名模式下尝试它,它会工作吗?Math.random()是本机JavaScript代码,所以我唯一想到的是,在你的代码中的某个地方,你覆盖了Math对象。如果一切正常,你找到了这些东西,在GitHub上找到它的作者,与他建立信任,获得他的家庭地址,找到一些很重的东西,告诉我凌驾于语言之上确实是个坏主意(正如我所说的,我知道这是一件微不足道的事情,会让人感到羞耻。格伦,联系现在断了。我建议现在就在这里指出:@AlexisWilke谢谢你指出这一点。我将链接替换为webarchive缓存副本。这与问题无关
Math.random()
显然是一个JavaScript函数,它应该可以一直工作下去。