Javascript - 使用函数执行停止函数

时间:2014-02-14 00:10:13

标签: javascript function debugging

我想在另一个JS函数中插入我的debugger函数并暂停执行。

我知道return false / true可以完成这项工作,但我希望我的调试器功能能够自动完成。

示例:

<script type="javascript">
    function validateFirstName () {
        //validating first name field
        var fn = $('#firstname').val();
        if(fn == "") {
            $("#errorMsg").html("Please insert first name");
            $("#firstname").focus();
            return false;
        }

        debugger(); //I want to stop everything here

        // if validation passes, redirect browser:
        window.location = 'nextpage.html';
    }

    function debugger () {
        console.log("Some custom message here");
        return false;
    }
</script>

您会注意到我将debugger函数放在validateFirstName()函数中。

我认为return false函数中的debugger()会阻止validateFirstName()执行。但事实并非如此。

如果不在validateFirstName()函数中添加return false,我如何使用 debugger()函数来停止所有执行?

4 个答案:

答案 0 :(得分:2)

替换

debugger(); //I want to stop everything here

return debugger(); //I want to stop everything here

以上示例将始终以true或false结束。

如果它是真的,这将继续到window.location,如果它是假的则停止。

if(!debugger())
  return;

在你的情况下,它似乎是一个函数内部的函数,所以你不妨使用

if(!debugger())
  return false;


似乎你真正想要做的是在执行代码上设置一个断点 在Chrome浏览器中按Ctrl+Shift+I
然后转到Sources标签
单击计数行号顶部的向右箭头(看起来像播放按钮)以查看网站列表
找到您的网站点击文件夹
找到你想要的任何脚本
现在单击代码中的任意位置以关闭侧栏 现在终于点击一边倒数行的任何数字 这将设置一个breakpoint,这意味着如果您通过在您的网站上执行某些操作来使代码转到那里,或者强制代码使用 Console标签,或只是在地址栏中输入javascript: function_to_call();

答案 1 :(得分:0)

你可以像这样从debugger ()投掷。

function debugger () {
    console.log('Some custom message here');
    throw 'Debugging Code';
}

虽然这会做你想要的,但我不推荐它。基本上发生的事情是你抛出的错误没有被你的代码捕获(浏览器会捕获它,但这可能不那么干净)。

答案 2 :(得分:0)

你可能会抛出错误:

function validateFirstName () {
        //validating first name field
    var fn = $('#firstname').val();
    if(fn==""){
      $("#errorMsg").html("Please insert first name");
          $("#firstname").focus();
      return false;
        }

debugger(); //I want to stop everything here

// if validation passes, redirect browser:
window.location='nextpage.html';

}


function debugger () {
    throw new Error("Some custom message here");
}

try{
    validateFirstName();
}catch(e){
   console.log(e);
}

答案 3 :(得分:0)

如果您使用的是Chrome等现代浏览器,为什么不使用debugger呢?

将触发开发人员工具中的调试器。

像这样:

debugger; //I want to stop everything here

注意缺少的()