Saya punya kode ini yang memeriksa string kosong atau nol. Ini bekerja dalam pengujian.
eitherStringEmpty= (email, password) ->
emailEmpty = not email? or email is ''
passwordEmpty = not password? or password is ''
eitherEmpty = emailEmpty || passwordEmpty
test1 = eitherStringEmpty "A", "B" # expect false
test2 = eitherStringEmpty "", "b" # expect true
test3 = eitherStringEmpty "", "" # expect true
alert "test1: #{test1} test2: #{test2} test3: #{test3}"
Yang saya ingin tahu adalah apakah ada cara yang lebih baik daripada not email? or email is ''
. Dapatkah saya melakukan yang setara dengan C # string.IsNullOrEmpty(arg)
di CoffeeScript dengan satu panggilan? Saya selalu dapat menentukan fungsi untuknya (seperti yang saya lakukan) tetapi saya bertanya-tanya apakah ada sesuatu dalam bahasa yang saya lewatkan.
coffeescript
jcollum.dll
sumber
sumber
!!
versi, yang merupakan cara umum untuk mentransmisikan ke boolean. Jika itu penting, ini hampir pasti lebih cepat daripada mendefinisikan fungsi seperti yang disarankan Jeremy.Ini tidak sepenuhnya setara, tetapi
email?.length
hanya akan benar jikaemail
bukan nol dan memiliki properti bukan nol.length
. Jika Andanot
nilai ini, hasilnya harus berperilaku seperti yang Anda inginkan untuk string dan array.Jika
email
adanull
atau tidak memiliki.length
, makaemail?.length
akan mengevaluasi kenull
, yang salah. Jika memiliki nilai.length
maka nilai ini akan mengevaluasi panjangnya, yang akan menjadi salah jika kosong.Fungsi Anda dapat diimplementasikan sebagai:
eitherStringEmpty = (email, password) -> not (email?.length and password?.length)
sumber
Ini adalah kasus di mana "kebenaran" menjadi berguna. Anda bahkan tidak perlu mendefinisikan fungsi untuk itu:
test1 = not (email and password)
Mengapa ini berhasil?
'0' // true '123abc' // true '' // false null // false undefined // false
sumber
.trim()
nilai sebagai bagian dari logika validasi Anda. Jawabannya lebih tentang sintaks CS.unless email? and email console.log 'email is undefined, null or ""'
Pertama, periksa apakah email tidak terdefinisi dan bukan null dengan operator eksistensial, kemudian jika Anda tahu itu ada
and email
bagian hanya akan mengembalikan false jika string email kosong.sumber
Anda dapat menggunakan coffeescript atau = operation
s = '' s or= null
sumber
Jika Anda perlu memeriksa bahwa isinya adalah string, bukan null dan bukan array, gunakan jenis perbandingan sederhana:
if typeof email isnt "string"
sumber
typeof email isnt "string"
mengembalikan false untuk keduanya''
dan'a'
Ini adalah jsfiddle mendemonstrasikan cara yang sangat mudah untuk melakukan ini.
Pada dasarnya Anda cukup melakukan ini adalah javascript:
var email="oranste"; var password="i"; if(!(email && password)){ alert("One or both not set"); } else{ alert("Both set"); }
Dalam coffescript:
email = "oranste" password = "i" unless email and password alert "One or both not set" else alert "Both set"
Semoga ini bisa membantu seseorang :)
sumber
Saya pikir tanda tanya adalah cara termudah untuk memanggil suatu fungsi pada suatu benda jika benda itu ada.
sebagai contoh
car = { tires: 4, color: 'blue' }
Anda ingin mendapatkan warnanya, tetapi hanya jika mobil itu ada ...
coffeescript:
diterjemahkan ke javascript:
if (car != null) { car.color; }
itu disebut operator eksistensial http://coffeescript.org/documentation/docs/grammar.html#section-63
sumber
Saya cukup yakin jawaban @thejh cukup baik untuk memeriksa string kosong TETAPI, saya pikir kita sering perlu memeriksa bahwa 'Apakah itu ada?' dan kemudian kita perlu memeriksa 'Is it empty? termasuk string, array dan objek '
Ini adalah cara singkat untuk CoffeeScript untuk melakukan ini.
tmp? and !!tmp and !!Object.keys(tmp).length
Jika kita menjaga urutan pertanyaan ini, itu akan diperiksa dengan urutan 1. apakah ada? 2. bukan string kosong? 3. bukan objek kosong?
jadi tidak ada masalah untuk semua variabel bahkan jika tidak ada.
sumber
Berdasarkan jawaban tentang memeriksa apakah suatu variabel memiliki
truthy
nilai atau tidak, Anda hanya perlu satu baris:result = !email or !password
& Anda dapat mencobanya sendiri di konsol Coffeescript online ini
sumber
Alih-alih jawaban yang diterima,
passwordNotEmpty = !!password
Anda dapat menggunakanpasswordNotEmpty = if password then true else false
Ini memberikan hasil yang sama (perbedaannya hanya dalam sintaksis).
Di kolom pertama adalah nilai, di kolom kedua adalah hasil dari
if value
:0 - false 5 - true 'string' - true '' - false [1, 2, 3] - true [] - true true - true false - false null - false undefined - false
sumber