কেন aaa = 1,2,3
কাজ এবং মান সেট aaa
করতে 1
?
কেন var bbb = 1,2,3
কাজ করে না ?
কেন var bbb = (1,2,3)
কাজ এবং মান সেট bbb
করতে 3
?
কেন aaa = 1,2,3
কাজ এবং মান সেট aaa
করতে 1
?
কেন var bbb = 1,2,3
কাজ করে না ?
কেন var bbb = (1,2,3)
কাজ এবং মান সেট bbb
করতে 3
?
উত্তর:
এখানে অনেক কিছু চলছে, তবে মূলত এটি কমা অপারেটরের কাছে নেমে আসে ।
কমা অপারেটর তার অপারেশনগুলির উভয়কে (বাম থেকে ডানে) মূল্যায়ন করে এবং দ্বিতীয় অপারেন্ডের মান প্রদান করে।
এই কোড:
aaa = 1,2,3
এর সমতুল্য:
aaa = 1;
2;
3;
সুতরাং aaa
সুস্পষ্টভাবে ঘোষিত হয় এবং 1 এর মান নির্ধারিত হয় লক্ষ করুন যে কনসোলে আউটপুটটি শেষ বিবৃতি, 3 এর ফলাফল।
এই কোড:
var bbb = 1,2,3
একটি সিনট্যাক্স ত্রুটি কারণ ভ্যারিয়েবল ডিক্লেয়ারেশনে কমাগুলি একক লাইনে একাধিক ভেরিয়েবল ঘোষণার জন্য ব্যবহৃত হয়। এমডিএন নিবন্ধটি যেমন উল্লেখ করেছে,
নোট যে কমা
var
বিবৃতি হল না কমা অপারেটর, কারণ এটি একটি অভিব্যক্তি মধ্যে বিদ্যমান নেই। বরং সেগুলির মধ্যেvar
একাধিককে একত্রিত করা বিবৃতিগুলির একটি বিশেষ চরিত্র ।
সুতরাং এই কোডটি মোটামুটি সমান:
var bbb = 1;
var 2;
var 3;
অবশ্যই, 2
কোনও বৈধ শনাক্তকারী নয়, সুতরাং এটি সেই সময়ে ব্যর্থ হয়।
এই কোড:
var bbb = (1,2,3)
প্রথমটির সাথে খুব সমান, কারণ সংখ্যাসূচক মানগুলি একটি বন্ধনীতে আবৃত হয়, সেগুলি প্রথমে মূল্যায়ন করা হয়। সুতরাং এটি রুগলি সমান:
1;
2;
var bbb = 3;
=
ইন- var bbb = 1;
এর =
মতো একই নয় aaa = 1;
- এগুলি ব্যাকরণে বিভিন্ন প্রযোজনা (ইনিশিয়ালাইজার বনাম অ্যাসাইনমেন্টএক্সপ্রেশন) থেকে আসে এবং কেবল একই টোকেনটি ব্যবহার করতে ঘটে।
a = 1, 2, 3
বন্ধনী হিসাবে চিহ্নিত করা যেতে পারে (a = 1), 2, 3
যা হিসাবে মূল্যায়ন করে a = 1; 2; 3
(এবং 3 টি প্রত্যাবর্তন করে, যেমন b = (a = 1, 2, 3)
3 থেকে খ নির্ধারণ করবে)। বিপরীতভাবে, a = (1, 2, 3)
যেমন মূল্যায়ন 1; 2; a = 3
এবং আয় 3.
(1 + 2) * 3
, 1 + 2
প্রথমে মূল্যায়ন করা হয় এবং সেই অভিব্যক্তির ফলাফলটি বাকী মূল্যায়নের জন্য বাইরের অভিব্যক্তিতে ফিরে আসে।
জাভাস্ক্রিপ্টে কমাটির একাধিক ব্যবহার রয়েছে। অভিব্যক্তিতে:
a = 1, 2, 3;
এটি এমন একটি অপারেটর যা কেবল তার ডান হাতের যুক্তি ফিরিয়ে দেয়। তবে এটি var
ঘোষণার বাক্য গঠনেরও একটি অংশ , যা হ'ল:
var var1 [ = val1 ], var2 [ = val2 ], var3 [ = val3 ], ...;
(যেখানে এর [...]
অর্থটি partচ্ছিক)। আপনার var
ঘোষণায় কমাগুলির পরে পরিবর্তনশীল নামগুলি অনুপস্থিত, সুতরাং এটি বিশ্লেষণ করে না। আপনি যে প্রভাবটি চেয়েছিলেন তা পেতে পারেন:
var a = (1, 2, 3);
প্রথম বন্ধনী কমাগুলিকে পরিবর্তনশীল ঘোষণার মধ্যে ডিলিমিটারের পরিবর্তে অপারেটর হিসাবে বিবেচনা করতে বাধ্য করে।
আপনার উদাহরণগুলিতে, কমা দুটি প্রসঙ্গে ব্যবহার করা হয়েছে:
var
বিবৃতিvar
বিবৃতিটির বাক্য গঠনটি হ'ল:
var varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];
এখানে, কমাটি পরিবর্তনশীল নাম-মান জোড়া পৃথক করতে ব্যবহৃত হয়। নিম্নলিখিতটি কাজ করবে না কারণ একটি চলক নাম একটি অঙ্ক দিয়ে শুরু করতে পারে না ( সনাক্তকারী নাম দেখুন ):
var bbb = 1, 2, 3;
// SyntaxError: Unexpected number
কমা অপারেটর তার অপারেশনগুলির উভয়কে (বাম থেকে ডানে) মূল্যায়ন করে এবং দ্বিতীয় অপারেন্ডের মান প্রদান করে। নিম্নলিখিত এক্সপ্রেশন নিম্নলিখিত হিসাবে কাজ করে:
aaa = 1, 2, 3;
aaa = 1, 2
ফলন 2
aaa = 1
প্রথমে মূল্যায়ন করা হয় কারণ =
এর চেয়ে বেশি অগ্রাধিকার রয়েছে,
2, 3
ফলন 3var bbb = (1, 2, 3);
(1, 2, 3)
ফলন দেয়3
bbb
মান নির্ধারিত হয়3
aaa = 1, 2, 3
=> কমা অপারেটর আলাদা করতে নিম্নলিখিত 3 বিবৃতি ব্যবহার করা হয়: aaa=1
, 2
এবং 3
। কমা অপারেটরের ফলাফলটি সর্বশেষ বিবৃতিটির মান 3 However তবে, আআআ 1 এর মান নির্ধারিত হয়, এটি স্পষ্টভাবে ওপির স্ক্রিনশট থেকে দেখা যায়। এর কারণ হ'ল অপারেটর অগ্রাধিকার, কমা অপারেটরটির সাথে সর্বনিম্ন নজরে রয়েছে।
প্রথম ক্ষেত্রে:
আআ = 1,2,3
কমাগুলি এক্সপ্রেশন বিভাজক হিসাবে কাজ করে। এটি একটি কার্য সম্পাদন করে aaa
, তারপরে এটি গণনা করে 2
এবং তা বাতিল করে দেয়, তারপরে এটি গণনা করে 3
এবং তা বাতিল করে দেয়।
দ্বিতীয়টিতে:
var bbb = 1,2,3
var
শব্দ জাভাস্ক্রিপ্ট কম্পাইলার একটি পর পরবর্তী জিনিস বলে ,
অন্য পরিবর্তনশীল নাম হওয়া উচিত। এটি সন্ধান করছে না, তাই এটি মারা যায় এবং দমড়ে যায়।
var bbb = (1,2,3)
এখানে, সংকলকটি প্রথমে এটি মূল্যায়ন করে 1
এবং উপেক্ষা করে। তারপরে এটি মূল্যায়ন করে 2
এবং উপেক্ষা করে। তারপরে এটি মূল্যায়ন করে 3
এবং এটি স্ট্যাকের উপর ছেড়ে যায় তাই এটি নির্ধারিত হয়bbb
স্বতন্ত্র ভাব প্রকাশের জন্য কমা ব্যবহার করা সাধারণ না হলেও for
চেহারাগুলির মতো জিনিসগুলিতে এটি কখনও কখনও কার্যকর ।
for (i = 0, l = 10; i < l; i++) {
console.log(i);
}
var a1,a2,a3;
কেবল তিনটি স্থানীয় ভেরিয়েবল ঘোষণা করবে।