- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
JSHint当我的 JavaScript 调用一个定义在页面下方的函数而不是对它的调用时,就会提示。但是,我的页面是用于游戏的,在整个下载完成之前不会调用任何函数。那么为什么出现在我的代码中的订单函数很重要?
http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting
我在里面呻吟。看来我需要再花一天时间重新排序六千行代码。 javascript 的学习曲线一点也不陡峭,但非常长。
最佳答案
tl;dr 如果您在加载所有内容之前不调用任何内容,那么您应该没问题。
编辑:概述也涵盖一些 ES6 声明(let
、const
):https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Scope_Cheatsheet
这种奇怪的行为取决于
这里有一些例子。
bar(); //This won't throw an error
function bar() {}
foo(); //This will throw an error
var foo = function() {}
bar();
function bar() {
foo(); //This will throw an error
}
var foo = function() {}
bar();
function bar() {
foo(); //This _won't_ throw an error
}
function foo() {}
function bar() {
foo(); //no error
}
var foo = function() {}
bar();
这是因为一种叫做提升的东西!
定义函数有两种方式:函数声明和函数表达式。区别很烦人而且很细微,所以我们只说这个有点错误的事情:如果你像 function name() {}
那样写它,它是一个声明,当你把它写成 var name = function() {}
(或分配给返回值的匿名函数,诸如此类),它是一个函数 expression。
var foo = 42;
//the interpreter turns it into this:
var foo;
foo = 42;
var foo = 42;
function bar() {}
//turns into
var foo; //Insanity! It's now at the top
function bar() {}
foo = 42;
var
语句将 foo
的创建“扔”到最顶层,但尚未为其分配值。接下来是函数声明,最后一个值被分配给 foo
。
bar();
var foo = 42;
function bar() {}
//=>
var foo;
function bar() {}
bar();
foo = 42;
只有foo
的声明 被移动到顶部。分配仅在调用 bar
之后进行,在所有提升发生之前。
bar();
function bar() {}
//turns to
function bar() {}
bar();
var foo = function() {}
foo();
//=>
var foo;
foo = function() {}
foo();
就像常规变量一样,首先 foo
在作用域的最高点被声明,然后被赋值。
bar();
function bar() {
foo();
}
var foo = function() {}
//=>
var foo;
function bar() {
foo();
}
bar();
foo = function() {}
正如我们之前所见,只有 foo
的创建被提升,赋值出现在它出现在“原始”(未提升)代码中的位置。当 bar
被调用时,它是在 foo
被赋值之前,所以 foo === undefined
。现在在 bar
的函数体中,就好像您正在执行 undefined()
,这会引发错误。
关于JavaScript 函数顺序 : why does it matter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7609276/
Matter-js - 如何获得矩形的宽度和高度? 我需要知道是否在 Matter-js 中实现了距离返回方法。 // part.vertices[0] and part.vertices[1] 我想
如何在 Matter.js 中添加以编程方式触发的触摸/鼠标事件?我为引擎设置了一些碰撞事件,但无法触发停止当前拖动操作的 mouseup 事件。我已经尝试了针对 canvas 元素、mouse/mo
我正在使用matter.js我有具有绝对位置的对象的顶点数据(来自 SVG 文件)。当我尝试将它们放置在 map 上时,它们最终都位于 0, 0 附近。通过以下代码片段可以轻松观察到这一点:
我经常读如下语句: “当变量将被多个线程读取和写入时,请使用“同步”。 来源: https://jorosjavajams.wordpress.com/volatile-vs-synchronized
是否可以在matter.js中创建位于x/y坐标中心的单个重力/力点? 我已经成功地使用 d3.js 做到了这一点,但想询问 Matter.js,因为它能够使用多个 Polyshape。 http:/
授予,micro-optimization is stupid并且可能是实践中许多错误的原因。尽管如此,我还是看到很多人这样做: void function( const double& x ) {}
我当前的实现使用大量具有这种语法的复制构造函数 MyClass::Myclass(Myclass* my_class) 它真的(功能上)不同于 MyClass::MyClass(const MyCla
原始问题: JSHint当我的 JavaScript 调用一个定义在页面下方的函数而不是对它的调用时,就会提示。但是,我的页面是用于游戏的,在整个下载完成之前不会调用任何函数。那么为什么出现在我的代码
我有一个 Hugo 网站,每个文件都有翻译,使用页面包。 所以关于页面看起来像这样: - about - about-image.jpg - index.en.md - index.nl.
我正在尝试运行一个在服务器上运行物理模拟的服务器,并让客户端通过 websockets/socket.io 连接到该服务器。我知道我可以使用 Matter.js 将引擎与渲染分开计算。所以我的问题是,
我通过 Matter.js 创建了如下两个矩形 我正在尝试将“a”框移到“b”框上方。 我想我应该写applyForce此时,如何计算适当的 X、Y 力值以放入因子? 下面的代码是由粗略的近似值组成的
WHERE IN 子句中值的顺序是否重要? (如果这很重要,这是在 Firebird SQL 上) 比如: where field1 in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10
一切都是不变的,但是将 chrome 选项卡移动到另一个监视器会以某种方式影响落球的物理特性 问题视频:(在mac上录制) https://www.youtube.com/watch?v=eNoVsh
问题.js - 这是 one of the demo来自matter.js。它返回一个空白屏幕。我尝试了几种方法,并在这方面花费了数小时和数小时,但仍然无法弄清楚这里出了什么问题。 我检查了括号、语法
我正在尝试以编程方式设置 matter.js 中链接主体的宽度和高度。不幸的是,我只得到 0 作为值,我不确定为什么。我的猜测是图像加载速度不够快,无法提供这些值。如何在加载图像之前加载这些尺寸? 伪
我对在这里提问还比较陌生,所以请多多包涵。我正在尝试使用 Matter.js 作为主要物理引擎创建一个自上而下的驾驶游戏。我希望红色汽车与绿色广场相撞。然而,我仍然不知道如何在我的游戏中实现 Matt
我使用不同的语言和平台从事各种项目。我将其中的一部分抽象到他们自己的独立项目中,我想向公众开放其中的一些。 让我卡住的是洗礼。 那么,有关系吗?我应该选择一些东西并坚持下去吗? 如果它确实重要,那么更
下面是在执行时引发一些错误的代码。我想做的是无论什么(错误或无错误)都将执行代码的最后一行。 "backend_photo_album", )); @unlink($file_path);
我正在使用 .js 创建一个简单的游戏,您必须将球插入洞中。 如果我使用 isStatic: false对于球对象,在游戏开始时它会掉落。如何旋转整个平台,使其保持水平并且物体不会掉落但可以被插入?
我正在创建一个项目,其中用户拾取并抛出一个物体(使用鼠标约束)。 body 被设置为可以绕约束点枢转。我需要找出,从放开它的那一刻起,它在着陆之前完全旋转了多少次(+-360 度)。阅读文档,我能找到
我是一名优秀的程序员,十分优秀!