Apakah ada sesuatu seperti "mati" di JavaScript? Saya sudah mencoba dengan "break", tetapi tidak berhasil :)
javascript
cupakob
sumber
sumber
function die(str) {throw new Error(str || "Script ended by death");}
Atau sesuatu XD Banyak pilihan yang lebih baik di luar sana, tapi ini akan berhasil. Mungkin bagus untuk debugging, jika Anda hanya ingin menjalankan bagian pertama dari skrip untuk memastikannya berfungsi.die
,goto
,eval
, dll tanpa henti dimuntahkan (dan bukan tanpa jasa), tetapi mereka semua memiliki kegunaan khusus mereka, terutama untuk tingkat rendah debugging. Jika tidak, bahasa tidak akan memasukkannya. Dalam hal ini, JS setarareturn
danthrow
cukup tidak berbahaya.Jawaban:
Anda hanya dapat
break
memblokir cakupan jika Anda melabelinya. Sebagai contoh:Anda tidak dapat memutus lingkup blok dari dalam fungsi dalam lingkup. Ini berarti Anda tidak dapat melakukan hal-hal seperti:
Anda dapat melakukan sesuatu yang serupa dengan fungsi:
sumber
foo: {}
adalah sebuah benda?foo: if(true){...}
sumber
Anda cukup menggunakan
return;
contohKembali akan kembali ke fungsi pemanggil utama test1 (); dan lanjutkan dari sana ke test3 ();
tetapi jika Anda hanya menambahkan lemparan ''; ini akan menghentikan eksekusi sepenuhnya tanpa menyebabkan kesalahan apa pun.
Ini diuji dengan firefox dan chrome. Saya tidak tahu bagaimana ini ditangani oleh IE atau Safari
sumber
return
hanya keluar dari fungsi penutup. Ini tidak berfungsi jika Anda ingin berhenti menjalankan seluruh skrip.throw ""
: ... tanpa menyebabkan kesalahan ...Uncaught ""
Telepon saja
die()
tanpa pernah menjelaskannya. Skrip Anda akan macet. :)Ketika saya melakukan ini, saya biasanya menelepon
discombobulate()
, tetapi prinsipnya sama.(Sebenarnya, yang dilakukannya adalah melempar
ReferenceError
, membuatnya kira-kira sama dengan jawaban spudly - tetapi lebih pendek untuk diketik, untuk tujuan debugging.)sumber
die
intuitif dan ringkas. Itu tidak memiliki manfaatthrow
ketika datang untuk mencatat pesan kesalahan tertentu, tetapi terkadang hanya nomor baris yang cukup. BTW,die;
tanpa tanda kurung (un-) juga berfungsi.Dimungkinkan untuk menggulung dadu PHP versi Anda sendiri:
Contoh JSFiddle
sumber
var a = arguments[3] || die('message')
. sebagai gantinya, saya pikir mati seharusnya:function die(msg) { return eval(`throw "${msg}"`);)
tetapi meskipun demikian, saya pikir ini hanya harus keras ditempatkan pada baris yang terputus sehingga kesalahan menunjukkan baris mana yang gagal, misalnyathis.inputFile = argv[2] || eval('throw "this program requires an input file."');
Jika Anda menggunakan nodejs, Anda dapat menggunakan
sumber
gunakan firebug dan ...
dan jangan biarkan debugger membuat langkah apa pun ke depan. Lebih bersih dari pada melempar yang benar
Error
, kan?sumber
Tidak ada persamaan yang tepat dari konstruksi bahasa
die
PHP dalam Javascript .die
di PHP hampir sama denganSystem.exit()
di Java , yang menghentikan skrip saat ini dan memanggil hook shutdown. Seperti yang disarankan beberapa pengguna;throw Error
dapat digunakan dalam beberapa kasus, namun tidak pernah menjamin penghentian skrip saat ini. Selalu ada blok penanganan pengecualian yang mengelilingithrow
pernyataan Anda - kecuali jika Anda memanggilnya di blok skrip paling atas, yang pada akhirnya hanya keluar dari blok skrip yang Anda jalankan.Namun itu tidak akan mencegah blok kedua dieksekusi di sini (mencetak halo):
sumber
Anda bisa mencoba dengan:
yang berfungsi jika proses berhenti.
sumber
Tidak ada fungsi keluar yang setara dengan php die () di JS, jika Anda tidak menggunakan fungsi apa pun maka Anda dapat menggunakan return;
sumber
Anda dapat menggunakan return false; Ini akan menghentikan skrip Anda.
sumber
Ini harus bekerja seperti die ();
sumber
Fungsi die () global untuk tujuan pengembangan:
Gunakan die ():
sumber
sumber