以下是代码:
var n = 4;
while(n) {
console.log("Hey!");
n = 5;
}
我在这里:
n是一个变量,值为4.
当n = 4时,在控制台中打印“嘿”。
将n的值更改为5。
检查n = 4。
n不等于4,所以停止执行代码!
我哪里错了?我真的很沮丧!编辑了一百万次!最糟糕的是,浏览器每次都崩溃了! 请纠正我!
答案 0 :(得分:2)
我在这里:
n是一个变量,值为4.
当n = 4时,在控制台中打印“嘿”。
it('"get" rejects with invalid path', function() {
$httpBackend.whenGET('/invalid').respond(404, '');
var wasRejected = false;
$http.get('/invalid')
.error(function (data, status, headers, config) {
console.log(status);
wasRejected = true;
});
// Trigger http promise resolution
$httpBackend.flush();
// Make your assertion...
expect(wasRejected).toBeTrue();
});
afterEach(function(){
$httpBackend.verifyNoOutstandingExpectation();
$httpBackend.verifyNoOutstandingRequest();
});
没有检查while(n)
是否为n
,它会检查4
是否 truthy < / em>的*。 n
和4
都是 truthy 值。
要检查是5
,请使用4
或==
:
===
(有关while (n === 4) {
console.log("Hey!");
n = 5;
}
与==
的详情,请参阅this question及其答案。)
* JavaScript在许多地方使用类型强制,包括测试===
循环和类似的条件时。所以我们谈论价值观是“真实的”(他们强迫while
)或“假”(他们强迫true
)。 Truthy值都是非虚假的值。假名值为false
,0
,""
,null
,undefined
,当然还有NaN
。