Chrome开发工具无法识别手表下的功能

时间:2017-04-05 05:42:19

标签: javascript google-chrome google-chrome-devtools javascript-debugger

我遇到了Chrome Dev工具的一个非常奇怪的问题。我的浏览器版本是57.0.2987.133(64位),这是最新版本。

我正在调试一个包含函数validatePositiveIntegerValue的脚本,但它正在使用此函数在watch <not available>下查看表达式。但是,如果我使用validateIntegerValue("23.34"),它会识别该函数并显示一个值。所以我很困惑为什么有些方法被识别,有些方法没有被识别,即使它们是在同一个区块中定义的。

我确实尝试在隐身窗口中渲染页面,并按Ctrl + Shift + R刷新脚本,但它什么也没做。

问题

为什么函数validatePositiveIntegerValue不能被监视表达式识别,但同一个块中定义的validatePositiveValue被监视表达式识别?

Chrome开发者工具中的脚本窗口 Chrom Dev Tools Script Window

在Chrome开发者工具中观看表达

[Chrome Dev Tools Watch Expression Problem[3]

如何重现此问题

我最接近复制此问题的方法是在Chrome中运行以下html文件。然后,当我点击两个按钮中的任意一个,并在doSomething内的myValidation方法中中断时,我无法评估此观察表达式validatePositiveIntegerValue("23.sd")

<!DOCTYPE html>
<head>
<title>Chrome Dev Tools Issue</title>
<script>
function doSomething1() {
  alert("hi 1");
  var isvalid =rpv.validateIntegerValue("dsdsd");
}

function doSomething2() {
  alert("hi 2");
   var isvalid = rpv.validateIntegerValue("dsdsd");
}


function myValidation() {
  var eo = {};

  eo.validateIntegerValue = function(integerValue) {
    doSomething();
    if (!integerValue) {
      return false;
    }
    if (isNaN(integerValue) === true) {
      return false;
    }
    return parseInt(integerValue).toString() === $.trim(integerValue.toString());
  }
   function validatePositiveIntegerValue(integerValue) {
    if (!integerValue) {
      return false;
    };
    if (isNaN(integerValue) === true) {
      return false;
    }
    return parseInt(integerValue).toString() === $.trim(integerValue.toString()) && parseInt(integerValue) >= 0;
  }
  function doSomething() {
     var x = 20;
   }

  function validateNegativeIntegerValue(integerValue) {
    if (!integerValue) {
      return false;
    };
    if (isNaN(integerValue) === true) {
      return false;
    }
    return parseInt(integerValue).toString() === $.trim(integerValue.toString()) && parseInt(integerValue) < 0;
  }

  function validatePositiveOrZeroIntegerValue(integerValue) {
    if (!integerValue) {
      return false;
    };
    if (isNaN(integerValue) === true) {
      return false;
    }
    return parseInt(integerValue).toString() === $.trim(integerValue.toString()) && parseInt(integerValue) > 0;
  }

  return eo;

}

var rpv = myValidation();
</script>
</head>
<body>
Chrome Dev Tools Issue with Watch Expression not recognising a function
<button id="btn1" onclick="doSomething1();return false;">Call doSomething1 method</button>
<button id="btn1" onclick="doSomething2();return false;">Call doSomething2 method</button>
</body>
</html>

更新

我在以下网址创建了Chrome错误:Chrome Bug Item

0 个答案:

没有答案