我有以下代码:我试图检查未定义的,但它不工作
$scope.$watch("pid", _.debounce(function (pid) {
var a = pid;
$scope.$apply(function (pid) {
if (typeof pid == "undefined" || pid == null || pid === "") {
$scope.pidLower = null;
$scope.pidUpper = null;
}
else if (pid.indexOf("-") > 0) {
pid = pid.split("-");
$scope.pidLower = parseInt(pid[0]);
$scope.pidUpper = parseInt(pid[1]);
}
else {
$scope.pidLower = parseInt(pid);
$scope.pidUpper = null;
}
});
}, 1000));
的第一次代码运行时(PID字段为空),我检查PID与谷歌的开发工具它显示为“未定义”。但是,当代码运行时,它不会进入第一个条件。相反,它进入到第二,并给出一个错误说:
类型错误:对象#有没有方法“的indexOf”
谁能告诉我,为什么它忽略了第一个if语句?
这里是我所得到的,当我使用控制台检查第一行PID与if:
console.log(typeof pid)
object
undefined
如果它未定义,那么它应该进入第一个条件。试着制作一个*完整*简化的测试用例,以便我们看到问题所在。 – Quentin
从看到错误信息并进入第二个条件,我会认为它是实际定义的,但没有'indexOf'方法(表示它不是一个字符串或数组)。在devtools中检查变量时,你确定你在正确的范围内吗?你可以'console.log(typeof pid)'? – SoonDead
@SoonDead - 我做了控制台日志并更新了问题。 – Melina