Tôi đã phải viết một thói quen tăng giá trị của một biến bằng 1 nếu loại của nó là number
và gán 0 cho biến nếu không, trong đó biến ban đầu là null
hoặc undefined
.Tại sao `null> = 0 && null <= 0` nhưng không phải` null == 0`?
Triển khai đầu tiên là v >= 0 ? v += 1 : v = 0
vì tôi nghĩ bất kỳ thứ gì không phải là số sẽ làm cho biểu thức số học sai, nhưng đã sai vì null >= 0
được đánh giá là đúng. Sau đó, tôi đã học được null
hoạt động như 0 và các biểu thức sau đây được đánh giá là đúng.
null >= 0 && null <= 0
!(null < 0 || null > 0)
null + 1 === 1
1/null === Infinity
Math.pow(42, null) === 1
Tất nhiên, null
không phải là 0. null == 0
được đánh giá là false. Điều này làm cho biểu thức có vẻ như taut (v >= 0 && v <= 0) === (v == 0)
sai.
Tại sao null
như 0, mặc dù nó không thực sự là 0?
Ông đang nói về Javascript. Ví dụ của bạn là bằng PHP. Trong toán tử PHP == so sánh các giá trị theo một cách đặc biệt. Bạn có thể làm cho một số so sánh thực sự điên rồ như "10" == "1e1" (đó là sự thật). Nếu bạn sử dụng toán tử ===, bạn sẽ nhận được một kết quả hoàn toàn khác vì nó kiểm tra xem loại khớp với giá trị hay không. Kiểm tra liên kết này: http://www.php.net/manual/en/language.operators.comparison.php – Pijusn
Toán tử PHP '==' thực sự hoạt động theo cách "đặc biệt". –
Nếu yêu cầu của bạn là bắt đầu đếm tại 1 thay vì 0, có một cách thực sự terse để tăng quầy mà ban đầu hoặc là 'null' hoặc' undefined': 'c = - ~ c // Kết quả trong 1 cho null/undefined; số gia tăng nếu đã là một số' –