(1,eval)পুরানো এবং সাদামাটা পুরানো মধ্যে পার্থক্যটি evalহ'ল পূর্বেরটি একটি মান এবং পরেরটি একটি মূল্যবান ue এটি যদি আরও কিছু সনাক্তকারী হয় তবে এটি আরও স্পষ্ট হবে:
var x;
x = 1;
(1, x) = 1;
এটি (1,eval)এমন একটি অভিব্যক্তি যা ফল দেয় eval(ঠিক যেমনটি বলুন, (true && eval)বা (0 ? 0 : eval)হবে) তবে এটি কোনও রেফারেন্স নয় eval।
আপনি যত্ন কেন?
ওয়েল, একমা বৈশিষ্ট একটি বিবেচনা করে রেফারেন্স থেকে evalএকটি "সরাসরি Eval কল" হতে, কিন্তু একটি অভিব্যক্তি যে নিছক উৎপাদনেরeval প্রত্যক্ষ ও পরোক্ষ Eval কল বিশ্বব্যাপী সুযোগ চালানো নিশ্চিত হয় - একটি পরোক্ষ এক পরিণত হয়।
আমি এখনও যে জিনিসগুলি জানি না:
- কোন পরিস্থিতিতে সরাসরি স্পষ্ট কল বিশ্বব্যাপী সুযোগে কার্যকর হয় না ?
- কোন পরিস্থিতিতে
thisবিশ্বব্যাপী সুযোগে কোনও ক্রিয়াকলাপ বিশ্বব্যাপী বস্তুটি উত্পাদন করতে পারে না ?
আরও কিছু তথ্য এখানে আটকানো যেতে পারে ।
সম্পাদনা
স্পষ্টতই, আমার প্রথম প্রশ্নের উত্তর হ'ল "প্রায় সর্বদা"। সরাসরি evalথেকে, executes বর্তমান সুযোগ। নিম্নলিখিত কোড বিবেচনা করুন:
var x = 'outer';
(function() {
var x = 'inner';
eval('console.log("direct call: " + x)');
(1,eval)('console.log("indirect call: " + x)');
})();
আশ্চর্যজনকভাবে (হি-হেই) নয়, এটি প্রিন্ট করে:
direct call: inner
indirect call: outer
সম্পাদনা
আরও পরীক্ষার পরে, আমি অস্থায়ীভাবে বলতে যাচ্ছি যে thisসেট করা যায় না nullবা undefined। এটি অন্যান্য মিথ্যা মানগুলিতে (0, '', NaN, মিথ্যা) সেট করা যেতে পারে তবে কেবল খুব ইচ্ছাকৃতভাবে।
আমি বলতে যাচ্ছি যে আপনার উত্সটি একটি হালকা এবং বিপরীতমুখী ক্র্যানিও-মলদ্বার বিপরীতে ভুগছে এবং হাস্কেলের একটি সপ্তাহের প্রোগ্রামিংয়ে কাটাতে বিবেচনা করতে পারে।