window.my = {};
window.my.init = function init(){};
function start(){
init()
}
start()
找不到init?
那起的函数名有什么用?
因为你可能需要这么用(递归)
window.my.init = function init(x){
if (!x) {
init(x+1)
}
};
因为你定义了一个叫做init
的函数,赋值给了window.my.init
,然后流程就结束了
并没有把叫做init
的函数,定义到全局变量中
function init () { };
window.my = {};
window.my.init =init
function start () {
init()
}
start()
这样就好了
原本报错是因为window.my.init = function init () { };
只是代表给my定义一个init的方法, 并不是先定义一个init的全局函数然后赋值给my, 也可以直接写作: window.my.init = () => {}
,
因为你的 init
函数是在 window.my
下面啊。并不是在 window
下面。
稍微修改一下就好了。
window.my = {};
window.my.init = function init(){};
function start(){
- init()
+ my.init()
}
start()
或者
window.my = {};
- window.my.init = function init(){};
+ window.init = function init(){};
function start(){
init()
}
start()
补充回答,对于为什么 window.my.init = function init(){};
这种函数表达式中申明的具名函数问题不可在外部被调用。
其实和规范有关(可能因为作用域?),这个我并不是很了解,可能后面会有其他大佬可以解答。
如果你想使用也是可以的,以下是一个例子
var fn1 = function fn0(n) {
if (n === 0) {
return 1;
} else {
// 如果在函数内调用则是可以的
return n * fn0(n - 1);
}
};
fn1(10)
// 3628800
// 但是如果你直接调用 fn0() 则会提示异常
fn0()
// Uncaught ReferenceError: fn0 is not defined
注意区分函数和函数表达式,它们还是有一些区别
my = {};
my.init = function init(){};
function start(){
my.init();
}
start();
window.my.init = function init(){};
这样的语句叫 函数表达式,而不是 函数声明,他们是有区别的,见 MDN 上关于函数表达式的 name
的介绍:
函数名称。可被省略,此种情况下的函数是匿名函数(anonymous)。函数名称只是函数体中的一个本地变量。
以及下面的
如果你想在函数体内部引用当前函数,则需要创建一个命名函数表达式。然后函数名称将会(且只会)作为函数体(作用域内)的本地变量。这样也可以避免使用非标准的 arguments.callee 属性。
说白了, 这里的 init ,就只是让你作为在这个函数内部进行引用的。
引用一下 ECMA-262 中的
The BindingIdentifier in a FunctionExpression can be referenced from inside the FunctionExpression's FunctionBody to allow the function to call itself recursively. However, unlike in a FunctionDeclaration, the BindingIdentifier in a FunctionExpression cannot be referenced from and does not affect the scope enclosing the FunctionExpression.
找不到init? 那起的函数名有什么用?
问题内容: 代码,注意值的顺序不同。因此,它在锁定行之间交替: 表def: 例外: 该代码仅与WITH(TABLOCK)提示一起使用。是否可能不仅仅为了并行更新那两行就锁定整个表? 问题答案: 您的两个语句以不同的顺序获取行锁。这是死锁的典型案例。您可以通过确保所采用的锁定顺序始终处于某种全局顺序(例如,按ID顺序)来解决此问题。您可能应该将这两个语句合并为一个,并在将客户端上的ID列表排序之前,
如图,代码来自官方文档的reference,版本也是1.0.0-rc.13
本文向大家介绍js简单抽奖代码,包括了js简单抽奖代码的使用技巧和注意事项,需要的朋友参考一下 核心:js的Math对象和Array对象 demo:http://demo.jb51.net/js/2015/choujiang/ github:https://github.com/litengdesign/award
令牌“if”的语法错误(应在此令牌之后 谢谢你的建议!