非常简单的脚本:
function foo(){
return "bar"
}
console.log( foo() );
控制台:
> bar // sanity test that proves everything's working
> foo(); // this guy is key!
> ReferenceError: foo is not defined
我该如何调用foo();用于调试和实验目的?
这不是一种做法吗?我喜欢使用IRB / Rails控制台来验证我的ruby代码,并希望用JavaScript做同样的事情
答案 0 :(得分:9)
问题是您的foo
功能不属于全局范围。控制台基本上可以访问window
所做的所有事情。因此,如果在那里未定义,则在控制台中未定义。例如,这可能是控制台中没有foo的示例。
(function(){
function foo(){
return "bar";
}
console.log(foo()); //"bar"
})()
console.log(foo()); //ReferenceError: foo is not defined
找到一种方法来查找此方法的公开位置。如果它位于对象或方法内部,请确保从控制台引用它。
var foobar = {
foo: function(){ return "bar" ;}
};
console.log(foobar.foo()); //"bar"
如果您不能引用foo,那么就无法调用它。
答案 1 :(得分:2)
您正在尝试在JSFiddle中执行此操作,这会将您的javascript“隐藏”在您的控制台之外。它不是真正的执行范围。它不像你假设的那样在那里工作......
如果您创建了一个简单的HTML文件并在标签之间插入了javascript,那么在控制台中运行“foo()”就不会有问题。
创建test.html并将其放入:
<script>
function foo(){
return "bar"
}
console.log( foo() );
</script>