代码:
if($scope.someValue){
init();
}
var init = function(){
$scope.anotherVal = true;
}
测试用例:------------------------
describe('test 1', function(){
it('spec 1', function(){
//I could'nt figure out how to initiate the init() method in my test case?
$scope.someValue = true;
expect($scope.anotherVal).toEqual(true);
});
});
//错误:期望undefined等于true。
任何人都可以帮我弄清楚如何启动init()方法。将if条件移动到另一个方法不是一种选择。
答案 0 :(得分:0)
根据您的代码,您在声明函数之前调用函数init
。请注意您正在使用函数表达式。函数表达式未提升意味着当您声明一个函数时它没有移动到范围的顶部。
Hoisting是一种JavaScript机制,其中包含变量和函数 声明在代码之前移动到其作用域的顶部 执行。
函数表达的示例:
init(); // Output undefined
var init = function() {
console.log('It is not hoisted!!!');
}
函数声明只能被提升意味着在你调用函数之前你没有声明它是什么意思
功能声明示例:
init(); // Output Hoisted...
function init() {
console.log('Hoisted!!!')
}
更新1 :
如果您对此主题感兴趣,请点击Hoisting
链接