নিক্ষেপ ত্রুটি ('msg') বনাম নিক্ষেপ নতুন ত্রুটি ('msg')


164
var err1 = Error('message');
var err2 = new Error('message');

পার্থক্য কি? ক্রোম কনসোলগুলিতে তাদের দিকে তাকানো, তারা অভিন্ন দেখায়। বস্তুতে একই বৈশিষ্ট্য এবং একই __proto__চেইন। প্রায় মনে হয় Errorএকটি কারখানার মত কাজ।

কোনটি সঠিক এবং কেন?


5
সমস্ত নেটিভ কন্সট্রাক্টরগুলি ECMAScript এ সংজ্ঞায়িত করা হয়, যখন বিনা অনুরোধের সময় তাদের নিজ নিজ আচরণ সহ new
আমি অলস

উত্তর:


164

দুজনই ভাল আছেন; এটি স্পেসিফিকেশন স্পেসিফিকেশন বলা হয়েছে :

... সুতরাং ফাংশন কল একই আর্গুমেন্টের সাথে Error(…)অবজেক্ট তৈরির এক্সপ্রেশন সমতুল্য new Error(…)


7
ইএস 6-তেও কি এটি সত্য?
পলমেলিকো

4
হ্যাঁ. বর্তমান নথির
TheUightSide

@ পলমেলনিকো - হ্যাঁ পিছনের সামঞ্জস্যতা টিসি 39 এর সর্বোচ্চ অগ্রাধিকার। মন্ত্রটি হ'ল "ওয়েব ভাঙবেন না।"
টিজে ক্রাউডার

17

Errorএকটি কারখানা মত আচরণ করে, কিছু অন্যান্য নেটিভ কনস্ট্রাকটর মত: Array, Objectইত্যাদি সব চেক কিছু if (!(this instanceof Array)) { return new Array(arguments); }। (কিন্তু মনে রাখবেন যে String(x)এবং new String(x)খুব ভিন্ন, এবং অনুরূপভাবে জন্য Numberএবং Boolean।)

এটি বলেছিল যে কোনও ত্রুটির ক্ষেত্রে, এটি কোনও Errorবস্তু নিক্ষেপ করারও প্রয়োজন নেই ... throw 'Bad things happened';কাজ করবে,
আপনি ডিবাগিংয়ের জন্য এমনকি কোনও বস্তুকে আক্ষরিক নিক্ষেপ করতে পারেন:

throw {message:"You've been a naughty boy",
       context: this,
       args: arguments,
       more:'More custom info here'};

9
আমি ভীত আমি সম্পূর্ণরূপে একমত না। যেখানে কোনও বস্তু String("abc")তৈরি করে না does Stringnew String("abc")
pimvdb

2
@pimvdb: TRUE, আমি এটা পরিবর্তন করেছি Object=> Object('foo')আয় স্ট্রিং অবজেক্ট ... এটা জিনিস থেকে আসা প্রায় সমস্ত নেটিভ কনস্ট্রাকটর হয় একটু ভুল ... Number, Boolean, Date, Stringসব করতে না ... Array, Objectএবং Errorনা, তবে Eventএবং সমস্ত- DOMxxxxঅ্যাপি নির্মাতারা ত্রুটি ছুঁড়ে ফেলেছে
ইলিয়াস ভ্যান ওটেজেম

আমিও মনে new Array(arguments)করি ঠিক কী Array(1, 2, 3)করে তা করে না। তবে সম্ভবত আমি
নিটপিকিং

8
স্ট্রিং নিক্ষেপ সম্পর্কিত পরিপূরক: একটি স্ট্রিং কোনও ত্রুটি নয়
অলেক্স

11
@ অ্যালেক্স: মঞ্জুর, অ- Errorঘটনা (অথবা স্ট্রিং লিটারাল) নিক্ষেপ স্ট্যাক-ট্রেসকে হারিয়ে ফেলে। লিঙ্কযুক্ত নিবন্ধে কেবল একটি নিট-পিক: arguments.calleeকঠোর মোডে নিষিদ্ধ
এলিয়াস ভ্যান ওটেজেম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.