উদ্ধৃতি এবং উদ্ধৃতি ব্যতীত অবজেক্ট কীগুলির মধ্যে পার্থক্য কী?


209

এর মধ্যে কোনও পার্থক্য আছে কি?

obj = {'foo': 'bar'} 

এবং

obj = {foo: 'bar'}

আমি লক্ষ্য করেছি যে -আমি যখন উদ্ধৃতিগুলি ব্যবহার করি না তখন আপনি কীটি ব্যবহার করতে পারবেন না । কিন্তু এটি কি আসলে কোনও পার্থক্য করে? যদি হ্যাঁ, কোনটি?

উত্তর:


136

না, উদ্ধৃতিগুলি কোনও পার্থক্য করে না (যতক্ষণ না আপনি উল্লেখ করেছেন, আপনি এমন কী ব্যবহার করতে চান যা বৈধ জাভাস্ক্রিপ্ট শনাক্তকারী নয়)।

পার্শ্ব নোট হিসাবে, JSON ডেটা এক্সচেঞ্জ ফর্ম্যাট করে শনাক্তকারী প্রায় ডবল কোট প্রয়োজন (এবং না না একক উদ্ধৃতি অনুমতি)।


88
প্রকৃতপক্ষে, আপনি কোনও সম্পত্তির নাম হিসাবে সংখ্যাস্তৃত আক্ষরিক ব্যবহার করলে উদ্ধৃতিগুলি কোনও পার্থক্য আনতে পারে । উদাহরণস্বরূপ, obj = { 12e34: true };হিসাবে একই হয় না obj = { '12e34': true };। পূর্ববর্তীটির জন্য আপনাকে সম্পত্তিটি অ্যাক্সেস করার প্রয়োজন হবে obj['1.2e+35'], যখন আপনি পরে ব্যবহার করবেন obj['12e34']আরও তথ্যের জন্য আমার উত্তর দেখুন।
ম্যাথিয়াস বাইনেস 12

1
সত্য তবে এটি উজ্জ্বল হবে যদি ডাবল উদ্ধৃতিগুলি azচ্ছিকভাবে প্রথম প্রথম অক্ষরটি দেওয়া হয় + আলফা-সংখ্যাসূচক এবং বেশ কিছু হোয়াইটস্পেস ফ্যান ওরফে অদৃশ্য জায়গাগুলি বা ট্যাবগুলি থাকতে পারে? গভীরভাবে নেস্টেড নয় এমন ডেটার জন্য দুর্দান্ত।
জেসন সেব্রিং

124

জাভাস্ক্রিপ্টে অনাবৃত সম্পত্তির নাম / অবজেক্ট কীগুলি থেকে, বিষয়টিতে আমার লেখার আপ:

সম্পত্তির নাম একটি সংখ্যাসূচক বা বৈধ সনাক্তকারী নাম হলেই উদ্ধৃতিগুলি বাদ দেওয়া যেতে পারে

[...]

সমস্ত সম্পত্তি নামের জন্য ব্র্যাকেট স্বরলিপি নিরাপদে ব্যবহার করা যেতে পারে।

[...]

ডট স্বীকৃতি কেবল তখনই ব্যবহার করা যেতে পারে যখন সম্পত্তির নাম বৈধ সনাক্তকারী নাম।

নোট করুন যে সংরক্ষিত শব্দগুলিকে ES5 এ অনাবৃত সম্পত্তি নাম হিসাবে ব্যবহার করার অনুমতি দেওয়া হয়েছে। তবে, ES3 এর সাথে পিছনের সামঞ্জস্যের জন্য, আমি যাইহোক সেগুলি উদ্ধৃত করার পরামর্শ দিই।

আমি একটি সরঞ্জামও তৈরি করেছি যা আপনাকে জানাবে যে প্রদত্ত কোনও সম্পত্তির নাম উদ্ধৃতিবিহীন এবং / অথবা বিন্দু চিহ্ন সহ ব্যবহার করা যায় কিনা। এটি mothereff.in/js-poperties এ চেষ্টা করুন ।

স্ক্রিনশট


এই সরঞ্জামটি জীবন রক্ষাকারী ছিল। এই পোস্ট করার জন্য ধন্যবাদ।
ক্রিস ক্রিস্টেনসেন

আমি একটি খাড়া থেকে নেমে যাচ্ছিলাম, খুব খাড়া ঝুঁকিতে পড়ে যাচ্ছিলাম, একটি নির্দিষ্ট, নিখুঁত, রক্তক্ষয়ী মৃত্যুর দিকে ঝুঁকে পড়ে; তবে হায়, আমি আপনার জবাবটিতে একটি লিঙ্ক ক্লিক করেছি, এতে খুব সাধারণ জেএস সরঞ্জাম ছিল, যা আমাকে সেই খাড়া থেকে পড়তে বাধা দেয়। এই সরঞ্জামটি জীবন রক্ষাকারী ছিল।
অ্যান্ড্রু

8

এখানে কোন পার্থক্য নেই। কেবল স্টাইলের বিষয়। এটি করার অন্যতম কারণ হ'ল সংরক্ষিত কীওয়ার্ড হওয়ায় একটি সুপার হিসাবে 'সুপার' বা 'শ্রেণি' ব্যবহার করতে সক্ষম হচ্ছেন।

কিছু লোক হোয়াইটস্পেসের সাথে একটি স্ট্রিংয়ে যেতে প্রলোভিত হতে পারে তারপরে ওকে কল করে [['আমার শ্বেত স্পেস থাকতে পারে']] তবে আমি এই খারাপ অভ্যাসটি বলি।


3

না, জাভাস্ক্রিপ্ট না। তবে কীগুলির আশেপাশে উদ্ধৃতি উপস্থিত না থাকলে কিছু জেএসএন পার্সার ব্যর্থ হবে।


35
উদ্ধৃতিবিহীন কীগুলি JSON এ অবৈধ।
নেড ব্যাচেল্ডার

1

কিছু পরিস্থিতি রয়েছে যেখানে সেগুলি আলাদা। উদাহরণস্বরূপ, আপনি যদি jQuery ব্যবহার করছেন, এবং আপনি উপাদান তৈরি করার জন্য jQuery command () কমান্ড কল করার সময় পাস করার জন্য প্যারামিটারগুলির একটি তালিকা তৈরি করছেন, উদ্ধৃত শব্দগুলি পরামিতিগুলিতে রূপান্তরিত হবে এবং অ-উদ্ধৃতিযুক্ত শব্দগুলি ফাংশনে রূপান্তরিত হবে। উদাহরণস্বরূপ, "আকার" বস্তুর আকারের বৈশিষ্ট্য নির্ধারণ করবে এবং আকার (কোন উদ্ধৃতি নেই), বস্তুর উপর আকার () ফাংশনটি কল করবে। নীচের অংশে jQuery () দেখুন :

দ্বিতীয় যুক্তিটি সুবিধাজনক হলেও এর নমনীয়তা অযৌক্তিক পরিণতি হতে পারে (যেমন $ (" <input>", {আকার: "4"}) আকারের বৈশিষ্ট্য নির্ধারণের পরিবর্তে .size () পদ্ধতিটি কল করে)। পূর্ববর্তী কোড ব্লকটি এভাবে পরিবর্তে লিখিত হতে পারে:


আমি মনে করি না যে উদাহরণটি যা বলে তা বলে says আপনি যে বিষয়টি উদ্ধৃত করেছেন তা হ'ল jQuery এর আকার বলে একটি পদ্ধতি রয়েছে এবং পদ্ধতিটি নির্বাচন করে পদ্ধতির আকার এবং গুণমানের আকারের মধ্যে দ্বন্দ্ব সমাধান করা হয়েছে। JQuery এর ক্ষেত্রে এমন কিছু ঘটনা রয়েছে যেখানে মানকে স্ট্রিং বা অন্য ধরণের হিসাবে পাস করানো আচরণের পরিবর্তনের কারণ হয়ে দাঁড়ায়, তবে কোয়েটে কোনও বৈধ সম্পত্তির নাম সহ কোনও সম্পত্তি সংজ্ঞা দেওয়া থেকে কখনই না।
অ্যালেক্স ওয়েইজার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.