Di bawah ini adalah cuplikan kode, tempat kami mengambil nilai formulir. Sebelum diproses lebih lanjut periksa apakah nilainya tidak nol ..
var val = document.FileList.hiddenInfo.value;
alert("val is " + val); // this prints null which is as expected
if (val != null)
{
alert("value is "+val.length); // this returns 4
}
else
{
alert("value* is null");
}
Adakah ide mengapa hal itu terjadi begitu .. ??
javascript
ria
sumber
sumber
Jawaban:
Itu karena val tidak
null
, tetapi berisi'null'
sebagai string.Coba periksa dengan 'nol'
Untuk penjelasan tentang kapan dan mengapa ini bekerja, lihat detail di bawah ini .
sumber
ini akan melakukan trik untuk Anda
sumber
if(val)
, yang jauh lebih jelas untuk dibaca. Saya akan tetap berpegang pada itu (fyi Ujwal, !! val secara teknis harus bekerja di C atau C ++ juga) lihat di sini untuk javascript nilai 'kebenaran': janosch.woschitz.org/javascript-equality-comparisonval = 0
sejak!!0
dinilai false0
,false
,null
,undefined
atau beberapa nilai seperti yang resolve ketrue
dengan satu!, Anda akan mendapatkanfalse
untuk !!. Itu harus digunakan hemat jika sama sekali.Ada 3 cara untuk memeriksa "bukan nol". Rekomendasi saya adalah menggunakan Strict Not Version.
1. Strict Not Version
Versi Strict Not menggunakan "Algoritma Perbandingan Kesetaraan Yang Ketat" http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6 . Ini
!==
memiliki kinerja lebih cepat, daripada!=
operator karena Algoritma Perbandingan Kesetaraan Ketat tidak mengetik nilai perkiraan.2. Non-strict Bukan Versi
Versi Non-ketat menggunakan "Algoritma Perbandingan Kesetaraan Abstrak" http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3 . Ini
!=
memiliki kinerja lebih lambat, daripada!==
operator karena Algoritma Perbandingan Kesetaraan Abstrak nilai typecasts.3. Ganda Bukan Versi
Double Not Version
!!
memiliki kinerja lebih cepat, daripada Strict Not Version!==
dan Non-Strict Not Version!=
( https://jsperf.com/tfm-not-null/6 ). Namun, itu akan mengetik nilai "Falsey" sepertiundefined
danNaN
menjadi False ( http://www.ecma-international.org/ecma-262/5.1/#sec-9.2 ) yang dapat menyebabkan hasil yang tidak terduga, dan memiliki keterbacaan yang lebih buruk karenanull
tidak secara eksplisit dinyatakan.sumber
!!val
bekerja untuk saya tetapival!==null
belum. Kenapa sih?val
?console.log(typeof val)
.!!
akan menghapus lebih dari sekadarnull
. Itu akan mengubahNaN
danundefined
menjadi salah juga. Dan itu sebabnya array Anda menyaring dengan benar ketika menggunakan operator bukan ganda!!
.Gunakan
!==
seperti yang!=
akan membawa Anda ke dunia keanehan tabel kebenaran JavaScript tidak transitif.sumber
undefined
ataunull
. Dalam hal inival != null
akan kembalitrue
untukundefined
ataunull
tetapi tidak untuk nilai falsey lain seperti0
.Anda harus menggunakan
not equals
operator perbandingan ketat!==
sehingga jika pengguna memasukkan"null"
maka Anda tidak akan sampai keelse
.sumber
Itu mungkin karena nilai
val
sebenarnya string"null"
daripada nilainull
.sumber
Ini seharusnya bekerja dengan baik ..
sumber
Jika Anda ingin dapat memasukkan 0 sebagai nilai yang valid:
sumber
Ini akan berhasil:
sumber
Periksa https://softwareengineering.stackexchange.com/a/253723
akan bernilai true jika nilainya tidak:
sumber