অপারেশন করার জন্য জাভাস্ক্রিপ্ট কনভেনশন কী?


121

অপারেশন করার জন্য জাভাস্ক্রিপ্ট কনভেনশন কী? পাইথন passকমান্ডের মতো

  • একটি বিকল্প কেবল খালি ফাংশন: function() {}
  • jQuery অফারগুলি $.noop(), যা কেবল উপরে খালি ফাংশনটিকে কল করে।
  • এটি কেবল একটি মান প্রবেশ করানো falseবা গ্রহণযোগ্য 0?

প্রসঙ্গে ... ক্রোমে কোনও ত্রুটি না ফেলে এই সমস্ত কাজ করে:

var a = 2;
(a === 1) ? alert(1) : function() {};
(a === 1) ? alert(1) : $.noop();
(a === 1) ? alert(1) : false;
(a === 1) ? alert(1) : 0;

সম্পাদনা: প্রচুর লোক এর প্রতিক্রিয়া জানিয়েছিল, "এটি করবেন না! কোড কাঠামো পরিবর্তন করুন!" এটি আমাকে এমন একটি পোস্টের কথা মনে করিয়ে দেয় যেখানে কোনও ব্রাউজারকে কীভাবে স্নিগ্ধ করতে হয় asked তিনি পোস্টগুলির ব্যারেজ পেয়েছিলেন, "এটি মন্দ কাজ করবেন না! এটি বলুন না," তবে ব্রাউজারটি কীভাবে শুকানো যায় তা কেউ তাকে বলেনি । এটি কোনও কোড পর্যালোচনা নয়। কল্পনা করুন যে আপনি লিগ্যাসি কোডটি নিয়ে কাজ করছেন যা পরিবর্তন করা যায় না এবং কোনও ফাংশন পাস না করে এটি ত্রুটি ছুঁড়ে মারবে। অথবা, সহজভাবে, গ্রাহকটি সেভাবেই চান এবং তারা আমাকে প্রদান করছে । সুতরাং, শ্রদ্ধার সাথে, দয়া করে এই প্রশ্নের উত্তর দিন : জাভাস্ক্রিপ্টে "অপারেশন" ফাংশন নির্দিষ্ট করার সেরা উপায় কী?

সম্পাদনা 2: এর মধ্যে একটি সম্পর্কে কীভাবে?

true;
false;
0;
1;
null;

7
বিবৃতি কেন সরল নয়?
এপাসকেলো

11
এই বিকল্পগুলির মধ্যে কোনওটিই 0কার্যকরভাবে কোনও উন্নত (বা আরও খারাপ) নয়। আমি বলব সঠিক জিনিসটি হ'ল if (a === 1) doSomething();এবং ? :যখন তা বোধগম্য হবে না তখন তা ব্যবহার করবেন না।
পয়েন্টি

6
আপনি পার্শ্ব প্রতিক্রিয়া সহ টার্নারি অপারেটরকে গালি দিচ্ছেন। যদি আপনার অবশ্যই হয়, তবেif (statement) action; else ;
এমপ্লুঞ্জন

হ্যাঁ falseবা 0কাজ করবে; nullকোনও বিকল্প পছন্দ করার এক দুর্দান্ত উপায়।
ম্যাট

3
আমি আশা করি যে কোনও কারণে আমরা দেখতে পাচ্ছি না এই টার্নারিটির কিছু প্রয়োজনীয়তা রয়েছে ... খুব সুন্দর দেখাচ্ছে আপনি আপনার কোডটি শীতল বোধ করার জন্য জটিল করে
তুলছেন

উত্তর:


95

মূল প্রশ্ন খাঁটি জাভাস্ক্রিপ্ট একটি noop ফাংশনের সবচেয়ে মার্জিত এবং ঝরঝরে বাস্তবায়ন উত্তর দেওয়ার জন্য (যেমন এছাড়াও আলোচনা করা হয় এখানে ) হল Function.prototype । এই কারণ:

  1. ফাংশন.প্রোটোটাইপ একটি ফাংশন:

typeof Function.prototype === "function" // returns true

  1. এটি একটি ফাংশন হিসাবে আহ্বান করা যেতে পারে এবং মূলত এখানে প্রদর্শিত হিসাবে কিছুই করে না:
setTimeout(function() {
      console.log('Start: ', Date.now());
      Function.prototype();
      console.log('End  : ', Date.now());
    }, 1000);

যদিও এটি একটি "সত্যিকারের নোপ", যেহেতু বেশিরভাগ ব্রাউজারগুলি নুপটি এভাবে সংজ্ঞায়িত করার জন্য কিছুই করতে পারে না বলে মনে হয় (এবং সেজন্য সিপিইউ চক্রটি সংরক্ষণ করে) এর সাথে কিছু কার্য সম্পাদনের সমস্যা থাকতে পারে (যেমনটি মন্তব্য বা অন্যেরা উল্লেখ করেছেন) অন্যান্য উত্তর)।

তবে, এটি বলা হচ্ছে, আপনি সহজেই আপনার নিজের নূপুর ফাংশনটি সংজ্ঞায়িত করতে পারেন এবং বাস্তবে, অনেকগুলি গ্রন্থাগার এবং ফ্রেমওয়ার্কগুলি নূপুর ফাংশন সরবরাহ করে। নীচে কয়েকটি উদাহরণ দেওয়া হল:

var noop = function () {};           // Define your own noop in ES3 or ES5
const noop = () => {};               // Define in ES6 as Lambda (arrow function)
setTimeout(noop, 10000);             // Using the predefined noop

setTimeout(function () {} , 10000);  // Using directly in ES3 or ES5
setTimeout(() => {} , 10000);        // Using directly in ES6 as Lambda (arrow function)

setTimeout(angular.noop, 10000);     // Using with AngularJS 1.x
setTimeout(jQuery.noop, 10000);      // Using with jQuery

নুপ ফাংশনগুলির বিভিন্ন বাস্তবায়নের (বা সম্পর্কিত আলোচনা বা গুগল অনুসন্ধান) এর বর্ণমালার তালিকা এখানে রয়েছে:

AngularJS 1.x , কৌণিক 2+ , - (উপরে দেখানো আপনার নিজের ব্যবহার করে না একটি নেটিভ বাস্তবায়ন আছে বলে মনে হচ্ছে) জ্বলন্ত আগুন , jQuery এর , Lodash , NodeJS , Ramda , প্রতিক্রিয়া (না একটি নেটিভ বাস্তবায়ন আছে বলে মনে হচ্ছে - আপনার নিজের ব্যবহার উপরে দেখানো হয়েছে), RxJS , আন্ডারস্কোর

বটম লাইন : যদিও জাভাস্ক্রিপ্টে ফাংশন.প্রোটোটাইপ একটি নূপ প্রকাশ করার একটি দুর্দান্ত উপায়, তবে এর ব্যবহারের সাথে সম্পর্কিত কিছু কার্য সম্পাদন সমস্যা হতে পারে। সুতরাং, আপনি নিজের সংজ্ঞা দিতে এবং ব্যবহার করতে পারেন (উপরে দেখানো হিসাবে) বা আপনি আপনার কোডটিতে ব্যবহার করতে পারেন গ্রন্থাগার / ফ্রেমওয়ার্ক দ্বারা সংজ্ঞায়িত একটি ব্যবহার করতে পারেন।


5
এই উত্তর হওয়া উচিত। আপনার Function.prototype()যদি সময়সীমা প্রয়োজন না হয় এবং এটি এখনই সম্পাদন করতে চান এমনটি ব্যবহার করতে পারেন।
স্প্রিংলোড 16'8

1
setTimeout(Function(), 10000);
iegik

@iegik: +1। হ্যাঁ আপনি সঠিক. নিম্নলিখিত সমস্ত সমতুল্য: সেটটাইমআউট (ফাংশন () {}, 10000); বা সেটটাইমআউট (নতুন ফাংশন (), 10000); বা সেটটাইমআউট (ফাংশন (), 10000); বা সেটটাইমআউট (ফাংশন, 10000); যেহেতু জাভাস্ক্রিপ্ট ব্যাকরণ এবং ফাংশন কনস্ট্রাক্টর বাস্তবায়ন এই নির্মাণগুলির অনুমতি দেয়।
অ্যালান সিএস

5
ES6 এ বা ব্যাবেল বা অন্য কোনও ট্রান্সপোর্টারটি (( )=>{};)প্রযুক্তিগতভাবে খাঁটি জেএস ব্যবহার করে এবং function () {}ঠিক সমতুল্য থেকে অনেক কম sh
রায় ফস

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

72

সবচেয়ে সংক্ষিপ্ত এবং performant noop একটি হল খালি তীর ফাংশন : ()=>{}

আই રો বাদে অ্যারো ফাংশনগুলি সমস্ত ব্রাউজারে নেটিভভাবে কাজ করে ( যদি আপনার অবশ্যই আবশ্যক তবে একটি ব্যাবাল ট্রান্সফর্ম রয়েছে ): MDN


()=>{} বনাম Function.Prototype

  • ()=>{}হয় 87% দ্রুত চেয়ে Function.prototypeক্রোম 67-এ।
  • ()=>{}হয় 25% দ্রুত তুলনায় Function.prototypeফায়ারফক্স 60 হবে।
  • ()=>{}হয় 85% দ্রুত তুলনায় Function.prototypeএজ (6/15/2018)
  • ()=>{}হয় 65% কম কোড চেয়ে Function.prototype

নীচের পরীক্ষাটি পক্ষপাতিত্ব দেওয়ার জন্য তীর ফাংশনটি ব্যবহার করে গরম করে Function.prototype, তবু তীর ফাংশনটি পরিষ্কার বিজয়ী:

const noop = ()=>{};
const noopProto = Function.prototype;

function test (_noop, iterations) {
    const before = performance.now();
    for(let i = 0; i < iterations; i++) _noop();
    const after = performance.now();
    const elapsed = after - before;
    console.info(`${elapsed.toFixed(4)}MS\t${_noop.toString().replace('\n', '')}\tISNOOP? ${_noop() === undefined}`);
    return elapsed;
}

const iterations = 10000000
console.info(`noop time for ${iterations.toLocaleString()} iterations`)
const timings = {
    noop: test(noop, iterations),
    noopProto: test(noopProto, iterations)
}

const percentFaster = ((timings.noopProto - timings.noop)/timings.noopProto).toLocaleString("en-us", { style: "percent" });
console.info(`()=>{} is ${percentFaster} faster than Function.prototype in the current browser!`)


1
কিছু বিকল্পের তুলনায় আমি জেএসফ্রি পরীক্ষা তৈরি করেছি: নুপ-ফাংশন । ফায়ারফক্স 54 এ, সমস্ত বিকল্প সমতুল্য বলে মনে হচ্ছে; ক্রোমিয়াম 58-তে, Function.prototypeমারাত্মকভাবে ধীর গতিতে, তবে অন্য বিকল্পগুলির কোনওটিরই একটি নির্দিষ্ট সুবিধা নেই।
লুকাস ওয়ার্কমিস্টার

_=>{}একটি চরিত্র কম এবং একই জিনিস।
রস অ্যাট্রিল

@RossAttrill * অনুরূপ জিনিস - _=>{}এর একটি একক প্যারামিটার রয়েছে। যদি কেউ যুক্তিসঙ্গতভাবে কঠোর কনফিগারেশনের সাথে টাইপস্ক্রিপ্ট ব্যবহার করে থাকে তবে তা সংকলন করবে না। আপনি যদি এটি কল করেন, আপনার আইডিই সম্ভবত আপনাকে বলবে যে এটি কোনও একক পরামিতি গ্রহণ করে যা কোনও প্রকারের হতে পারে (জাভাস্ক্রিপ্ট এবং বিশেষত vscode তে টাইপসক্রিপ্ট)।
চেম্বারলাইন

15

আপনি এখানে যা অর্জন করতে চান তা ভুল। টেরানারি এক্সপ্রেশনগুলি সম্পূর্ণ বিবৃতি হিসাবে ব্যবহৃত হবে না , কেবল প্রকাশে, তাই আপনার প্রশ্নের উত্তরটি হ'ল:

আপনার পরামর্শগুলির মধ্যে কোনওটিই এর পরিবর্তে করুন:

var a = 2;
if (a === 1)
    alert(1)
// else do nothing!

তারপরে কোডটি সহজেই বোধগম্য, পঠনযোগ্য এবং যতটা দক্ষ তা পেতে পারে।

কেন এটি আরও কঠিন করা যায়, যখন এটি সহজ হতে পারে?

সম্পাদনা:

তাহলে, "না-অপারেশন" কমান্ডটি মূলত একটি নিকৃষ্ট কোড কাঠামো নির্দেশ করে?

আপনি আমার বক্তব্য মিস করছেন। উপরের সমস্তটি ত্রৈমাসিক অভিব্যক্তি সম্পর্কে x ? y : z

তবে, কোনও অপারেশন কমান্ড জাভাস্ক্রিপ্টের মতো উচ্চ স্তরের ভাষাগুলিতে বোঝা যায় না।

এটি সাধারণত নিম্ন স্তরের ভাষায় যেমন এসেম্বলি বা সি হিসাবে ব্যবহৃত হয়, প্রসেসরকে সময়োচিত উদ্দেশ্যে কোনও নির্দেশের জন্য কিছুই না করার উপায় হিসাবে।

জাতীয়, আপনি কিনা 0;, null;, function () {};বা একটি খালি বিবৃতি, সেখানে মহান সম্ভাবনা এটি interpretor দ্বারা উপেক্ষিত হবে যখন তা পড়া হয়, কিন্তু সামনে এটা ব্যাখ্যা করা পায়, তাই শেষ পর্যন্ত, আপনি শুধু আপনার প্রোগ্রাম হতে করব সত্যিকারের ক্ষুদ্র পরিমাণে আরও ধীরে ধীরে লোড হয়েছে। নোটা বেনি : আমি এটি ধরে নিচ্ছি, যেহেতু আমি কোনও বহুল ব্যবহৃত জেএস দোভাষীর সাথে জড়িত নই, এবং প্রতিটি দোভাষীর নিজস্ব কৌশল রয়েছে এমন সম্ভাবনা রয়েছে।

আপনি যদি আরও কিছু জটিল কিছু ব্যবহার করেন, যেমন $.noop()বা var foo = function () {}; foo(), তাহলে দোভাষী তার একটি অযৌক্তিক ফাংশন কল করতে পারেন যা আপনার ফাংশন স্ট্যাকের কয়েকটি বাইট এবং কয়েকটি চক্রকে শেষ করে দেবে।

আমি $.noop()উপস্থিত থাকতে পারে এমন কোনও ফাংশনটি দেখতে পাবার একমাত্র কারণ , এখনও কিছু ইভেন্ট ফাংশনে একটি কলব্যাক ফাংশন দিতে সক্ষম হবে যা যদি সেই কলব্যাকটি কল করতে না পারে তবে ব্যতিক্রম করতে পারে would তবে তারপরে, এটি অবশ্যই আপনার দেওয়া একটি ফাংশন প্রয়োজন, এবং এটির noopনাম দেওয়া একটি ভাল ধারণা যাতে আপনি আপনার পাঠকদের বলছেন (এবং এটি আপনি 6 মাসের মধ্যে হতে পারেন) যে আপনি উদ্দেশ্যমূলকভাবে একটি খালি ফাংশন দিন।

শেষ পর্যন্ত, "নিকৃষ্ট" বা "উচ্চতর" কোড কাঠামোর মতো কোনও জিনিস নেই। আপনি নিজের সরঞ্জামগুলি যেভাবে ব্যবহার করেন তা আপনি সঠিক বা ভুল .. আপনার উদাহরণের জন্য একটি টের্নারি ব্যবহার করা যখন আপনি স্ক্রু করতে চান তখন হাতুড়ি ব্যবহার করার মতো। এটি কাজ করবে, তবে আপনি নিশ্চিত নন যে আপনি সেই স্ক্রুতে কিছু ঝুলতে পারবেন।

"নিকৃষ্ট" বা "উচ্চতর" হিসাবে বিবেচিত হতে পারে তা হ'ল আলগোরিদিম এবং ধারণাগুলি আপনি আপনার কোডটিতে রেখেছেন। তবে এটি অন্য জিনিস।


1
তাহলে, "না-অপারেশন" কমান্ডটি মূলত একটি নিকৃষ্ট কোড কাঠামো নির্দেশ করে?
কিমিক্লাস

3
@ কেমিক্লাস: আমি বলতে পারি না যে আমি এসেম্বলারের বাইরে কোনও এনওওপি-র বৈধ প্রয়োজন খুঁজে পেয়েছি।
ম্যাট বার্ল্যান্ড

@ জ্মমো: আপনার মন্তব্যগুলি কীভাবে বার্ষিক অভিব্যক্তির সাথে সম্পর্কিত তার বিষয়ে আমি আপনার বক্তব্যটি বুঝতে পারি; প্রত্যেকে আমার বক্তব্য মিস করেছেন বলে মনে হয় এটি "অপারেশন" ফাংশনে কল করার কেবল উদাহরণস্বরূপ।
কিমিক্লাস

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

2
@ বিয়ারভেরাইন আপনি যে উচ্চ মতামতটি আমাকে পেয়েছেন তার জন্য আপনাকে ধন্যবাদ :- ডি। আপনি আপনার মন্তব্যে একেবারেই সঠিক, তবে এটি কোড ডিজাইনের পক্ষে নয়, হ্যাক ব্যবহার করে কেবল মকআপ ডিজাইনের জন্য। আপনি যা বর্ণনা করেন তাকে বানর
প্যাচিংও

7

আমি মনে করি jQuery noop()বেশিরভাগ সময় অনুরোধ করা কোডটি উপলব্ধ না হলে ডিফল্ট ফাংশন সরবরাহ করে কোড ক্রাশ হওয়া থেকে রোধ করা। উদাহরণস্বরূপ, নিম্নলিখিত কোডের নমুনা বিবেচনা করে, $.noopযদি fakeFunctionসংজ্ঞায়িত না হয় তবে বেছে নেওয়া হয়, পরবর্তী কলটি fnক্রাশ হওয়া থেকে রোধ করে :

var fn = fakeFunction || $.noop;
fn() // no crash

তারপরে, noop()আপনার কোডের যে কোনও জায়গায় একই খালি ফাংশনটি একাধিকবার লিখতে এড়িয়ে স্মৃতি সঞ্চয় করতে দেয়। যাইহোক, এর $.noopচেয়ে কিছুটা ছোট function(){}(টোকেন প্রতি 6 বাইট সংরক্ষণ করা হয়)। সুতরাং, আপনার কোড এবং খালি ফাংশন প্যাটার্নের মধ্যে কোনও সম্পর্ক নেই। ব্যবহার করুন null, falseবা 0যদি আপনি চান, আপনার ক্ষেত্রে কোন পার্শ্ব প্রতিক্রিয়া হবে না। তদ্ব্যতীত, এই কোডটি ...

true/false ? alert('boo') : function(){};

... সম্পূর্ণরূপে নিরর্থক যেহেতু আপনি কখনই ফাংশনটি কল করবেন না এবং এটি ...

true/false ? alert('boo') : $.noop();

... যেহেতু আপনি একটি খালি ফাংশন বলছেন, এটি আরও অকেজো, যা হুবহু ...

true/false ? alert('boo') : undefined;

এর ifতাত্পর্যপূর্ণ বিবৃতিটি একটি বিবৃতি দিয়ে প্রতিস্থাপন করা যাক এটি কতটা অকেজো:

if (true/false) {
    alert('boo');
} else {
    $.noop(); // returns undefined which goes nowhere
}

আপনি কেবল লিখতে পারেন:

if (true/false) alert('boo');

বা আরও ছোট:

true/false && alert('boo');

অবশেষে আপনার প্রশ্নের উত্তর দেওয়ার জন্য, আমি অনুমান করি "প্রচলিত কোনও অপারেশন" হ'ল এটি কখনও লেখা হয় নি।


1
তবে মাঝে মাঝে আপনাকে একটি ফাংশন সরবরাহ করতে হবে। উদাহরণস্বরূপ তারপরে (fn, fn) মাঝে মাঝে আপনি দ্বিতীয় ফাংশনটি সরবরাহ করতে চান তবে প্রথম ফাংশনটি নয়। সুতরাং স্থানধারীর জন্য আপনার কিছু দরকার ...mypromise.then($.noop, myErrorhandler);
জন হেন্কেল

3

আমি ব্যবহার করি:

 (0); // nop

এই রান কার্যকর করার সময় পরীক্ষা করার জন্য:

console.time("mark");
(0); // nop
console.timeEnd("mark");

ফলাফল: চিহ্ন: 0.000ms

ব্যবহার করে Boolean( 10 > 9)এটি হ্রাস করা যায় ( 10 > 9)যা কেবল ফিরে আসে true। আমি সম্পূর্ণ প্রত্যাশিত একক অপারেন্ড ব্যবহার করার ধারণাটি নিয়ে (0);ফিরে আসব falseতবে এটি কনসোলে এই পরীক্ষাটি সম্পাদন করে পর্যালোচনা করা যেতে পারে কেবল তর্কটি ফিরিয়ে দেয়।

> var a = (0);
< undefined
> a
< 0

1
যারা এই চেষ্টা করেন তাদের অনেকেই পাবেনargument 0 is not a function
কোড হুইস্পেরার

4
আইএমও noopএমন একটি ফাংশন হওয়া উচিত যা undefinedফলাফলের সাথে মূল্যায়ন করে ।
চেম্বারলাইন

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

1
আমি মনে করি (0); ওপির প্রশ্নের গ্রহণযোগ্য সমাধান। আমি মনে করি লোকেরা বিভ্রান্ত হচ্ছে কারণ তারা এমন কোনও ফাংশন সন্ধান করতে গিয়ে এই পৃষ্ঠাটি খুঁজে পেয়েছিল যা কিছুই না করে than ওপি প্রাথমিকভাবে function(){}সমাধান হিসাবে পরামর্শ দিয়ে সহায়তা করছে না । কলিংয়ের (0)()কারণ হবেTypeError: 0 is not a function
বেনিয়ামিন

আমি উল্লেখ ছিল var a = (0);। কোনও অনি-মাপের স্মৃতি পরিবর্তন করা উচিত নয় এবং আপনার অ্যাসাইনমেন্ট উদাহরণটি এটি করে। (0)তার নিজের উপর একটি নিষ্প্রয়োজন নো অপ বিবেচনা করা হতে পারে (সেখানে জাভাস্ক্রিপ্ট এই অসীম সংখ্যা তাই কিছুই যে আপনার উদাহরণ এখানে বিশেষ করে তোলে আছে)।
চেম্বারলাইন

2

Function.prototypeওভার ব্যবহারের ক্ষেত্রে কোনও সমস্যা বা পারফরম্যান্স পেনাল্টি নেই () => {}

Function.prototypeপ্রত্যেকবার নতুন বেনামী ফাংশনটিকে নতুন করে সংজ্ঞায়িত করার পরিবর্তে সিঙ্গলটন ফাংশনটি হ'ল এর প্রধান সুবিধা । এটি Function.prototypeডিফল্ট মানগুলি সংজ্ঞায়িত করার সময় এবং কোনও স্মৃতিচারণ করার সময় কোনও অন -আপ ব্যবহার করা বিশেষত গুরুত্বপূর্ণ কারণ এটি আপনাকে একটি ধারাবাহিক অবজেক্ট পয়েন্টার দেয় যা কখনই পরিবর্তিত হয় না।

আমি এর Function.prototypeচেয়ে সুপারিশ করার কারণটি Functionহ'ল তারা একই নয়:

Function() === Function()
// false

Function.prototype() === Function.prototype()
// true

এছাড়াও, অন্যান্য উত্তরগুলির মানদণ্ড বিভ্রান্তিকর । আসলে, আপনি কীভাবে বেঞ্চমার্ক লিখবেন এবং চালান তার উপর নির্ভর Function.prototypeকরে দ্রুত সম্পাদন করে () => {}:

আপনি জেএস বেনমার্কগুলিকে বিশ্বাস করতে পারবেন না << বিশেষত এই প্রশ্নে বেঞ্চমার্কগুলি কল করে।

আপনার কোডটি মানদণ্ডগুলি থেকে স্টাইল করবেন না; যেটুকু রক্ষণাবেক্ষণযোগ্য তা করুন এবং দোভাষীকে কীভাবে দীর্ঘমেয়াদে অনুকূল করা যায় তা নির্ধারণ করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.