如何在firefox调试器中找到此变量的值

How can I find the value of this variable in firefox debugger?

本文关键字:变量 firefox 调试器      更新时间:2023-09-26

我是调试JavaScript和AngularJS的新手。我在以下代码段的几乎每一行都有断点,但我无法在Firefox调试器中找到response变量或datacontent。调试器中有一个非常密集的变量嵌套结构在Firefox调试器变量结构中的何处查找以下代码中responsedatacontent的值

该警报表示,confirmStatus变量的值与默认值相比没有变化,因此没有由对后端服务的调用填充,尽管后端服务调用生成了控制台日志,表明它已被激发。我想知道返回的内容和形式,这样我就可以修改下面的客户端代码。

以下是我在调试器中运行的Javascript代码段:

$scope.$on('$viewContentLoaded', function() {
    var str1 = "/confirm-email?d=";
    var str2 = $routeParams.d;
    var res = str1.concat(str2);
    $http.post(res).then(function(response) {
        $scope.confirmStatus = response.data.content;
            });
    var str3 = "confirmStatus is: ";
    alert(str3.concat($scope.confirmStatus))
    alert("viewContentLoaded!")
});

我建议先使用调试器。这意味着:

  • 使用开发人员工具菜单或键盘快捷键打开调试器:https://developer.mozilla.org/en-US/docs/Tools/Debugger/How_to/Open_the_debugger
  • 选择你想要调试的文件,快捷键在mac上,然后键入你的.js文件的一部分,让它在调试器中打开
  • 现在您应该可以看到.js文件的源代码,并且可以在左侧导航中单击要停止的行,例如$scope.confirmStatus=

angular还有一个很好的技巧,你可以从控制台访问范围。要执行此

  • 再次将开发人员工具打开到控制台,而不是调试器
  • 右键单击angular拥有的某个html附近的页面,然后选择"Inspect element"
  • 在控制台中:angular.element($0).scope(),您将可以访问该元素的控制器作用域

也就是说,您可能想要尝试捕获http.post的错误处理程序。例如

$http.post(res).then(function(response) {}, 
                     function(err) {});

请记住,此函数将与当前函数并行运行,稍后响应将来自服务器:

function(response) {
    $scope.confirmStatus = response.data.content;
}

您应该在这个$http回调函数中放入一个调试器断点——一旦回调函数执行结束,响应变量就会被销毁。

您的警报将始终显示未修改的confirmStatus,因为confirmStatus在回调函数中发生了更改,稍后将在服务器发出响应时执行该函数。