জাভাস্ক্রিপ্টে একাধিক ভেরিয়েবল ঘোষণা করা


333

জাভাস্ক্রিপ্টে, এই জাতীয় একাধিক ভেরিয়েবল ঘোষণা করা সম্ভব:

var variable1 = "Hello World!";
var variable2 = "Testing...";
var variable3 = 42;

... বা এটি পছন্দ:

var variable1 = "Hello World!",
    variable2 = "Testing...",
    variable3 = 42;

একটি পদ্ধতি কি অন্যের চেয়ে ভাল / দ্রুত?


6
দ্রুত হিসাবে , এই jsperf ব্যবহার করে আমি একটি পদ্ধতি বা অন্যটি ব্যবহার করে ধারাবাহিক গতি লাভ করতে পারি না।
মজিদ ফৌলদপুর

উত্তর:


344

প্রথম উপায় বজায় রাখা সহজ। প্রতিটি ঘোষণা একটি একক লাইনে একক বিবৃতি, যাতে আপনি সহজেই ঘোষণাগুলি যুক্ত করতে, অপসারণ করতে এবং পুনঃক্রম করতে পারেন।

দ্বিতীয় উপায় সহ, এটি প্রথম বা শেষ ঘোষণাটি সরিয়ে ফেলার বিরক্তিকর কারণ তারা varকীওয়ার্ড এবং সেমিকোলন ধারণ করে । এবং প্রতিবার আপনি কোনও নতুন ঘোষণা যুক্ত করার সময় আপনাকে পুরানো লাইনের অর্ধকোলনটি কমাতে পরিবর্তন করতে হবে।


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

36
jslint দাবি করেছে যে দ্বিতীয় উপায়টি আরও ধার্মিক তবে আমি একমত নই।
ThatGuy

29
দ্বিতীয় উপায়টি একটি মাইক্রো-অপ্টিমাইজেশন। সমস্ত বারের ঘোষণাগুলি একবারে একের পরিবর্তে একবারে প্রক্রিয়া করা হয়। আধুনিক ব্রাউজারগুলিতে / আধুনিক কম্পিউটারগুলিতে এটি এতটা গুরুত্বপূর্ণ নয়।
ওয়েবনেস্টো

18
@ 0xc0de: আমি একটি বিবৃতিতে সমস্ত পরিবর্তনশীলকে "দক্ষ" হিসাবে ঘোষণার প্রমাণ দেখতে চাই। আপনি যদি কেবল কয়েকটি বাইট সংরক্ষণের বিষয় হিসাবে দক্ষতা পরিমাপ করছেন তবে তাও হতে পারে। তবে আপনি যদি পঠনযোগ্যতা এবং রক্ষণাবেক্ষণের বিষয়টি বিবেচনা করেন, তবে আমি মনে করি যে অকাল অপটিমাইজেশন সাধারণত ভুল পথে যায়, বিশেষত যেহেতু আধুনিক ব্রাউজারগুলি প্রাক-এক্সিকিউশন পাসের স্কোপের মধ্যে সমস্ত ভেরিয়েবল সংগ্রহ করে এবং আরম্ভ করবে। ব্যক্তিগতভাবে, আমি ভেরিয়েবলগুলি সমস্ত একক লাইন বা বিবৃতিতে ঘোষিত দেখতে পেয়েছি যাতে কোড বোঝার জন্য আরও কঠিন এবং আরও ত্রুটিযুক্ত হতে পারে।
ogradyjd

9
দক্ষতা সম্পর্কিত, উভয় uglifyjs এবং গুগল ক্লোজার সংকলক স্বয়ংক্রিয়ভাবে অনুক্রমের বিভিন্ন স্টেটমেন্টগুলিকে স্কোয়েশ করবে, সেই বিন্দুটি ছড়িয়ে দেবে (যতদূর আমি YUI বলতে পারি এটি করবে না, তবে আমি ব্যাপকভাবে পরীক্ষা করে দেখিনি)।
ভুবার

215

রক্ষণাবেক্ষণের পাশাপাশি, প্রথম উপায় দুর্ঘটনার বৈশ্বিক চলক তৈরির সম্ভাবনা দূর করে:

(function () {
var variable1 = "Hello World!" // semicolon is missed out accidently
var variable2 = "Testing..."; // still a local variable
var variable3 = 42;
}());

যদিও দ্বিতীয় উপায়টি কম ক্ষমাশীল:

(function () {
var variable1 = "Hello World!" // comma is missed out accidently
    variable2 = "Testing...", // becomes a global variable
    variable3 = 42; // a global variable as well
}());

4
ভাল যুক্তি. যদি তারা সংক্ষিপ্ত হন, তাহলে একটি একক লাইন লেখা এই সমস্যা এড়াতে হবে: var variable1 = "Hello World!", variable2 = "Testing...", variable3 = 42;। নিখোঁজ হওয়া ,দুর্ঘটনা ঘটবে, তবে আমি সম্মত তা ঝুঁকিপূর্ণ
আরাম কোচার্যান

14
আপনি যদি কঠোর মোড ব্যবহার করেন তবে আপনি আর এই জাতীয় গ্লোবাল তৈরি করতে পারবেন না।
দানিয়াল আয়তেকিন

1
আমি একক লাইনে একাধিক ভেরিয়েবল ঘোষণার এক অনুরাগী কারণ আমার মনে হয় এটি আরও পরিষ্কার দেখাচ্ছে। বলেছিল, দুর্ঘটনাক্রমে বৈশ্বিক চলক ঘোষণা করা সত্যই বিপদ। মেমরি ফাঁসের শিকার করার সময় আমি একাধিক উদাহরণ পেয়েছি যেখানে আমি ঘটনাক্রমে একযোগে বেশ কয়েকটি বৈশ্বিক ভেরিয়েবল ঘোষণা করি কারণ আমি কমাের পরিবর্তে অর্ধপরিমাণ ব্যবহার করেছি।
স্মবট

+1 কেবলমাত্র দিনের অর্ধেক সময় ব্যয় করেছে এবং এমনকি এই দুটি ঘোষণার মধ্যে কেন অঘোষিত পার্থক্য রয়েছে তা ভাবতে শুরু করে। তারপরে এই উত্তরটি পড়ুন, কোডটি সাবধানে পরীক্ষা করে দেখুন এবং ভুলটি খুঁজে পেয়েছেন। ছুটির দরকার ...
গিডেরিয়াস

1
আমার পাঠ্য সম্পাদক আমাকে Possible Fatal Errorযদি একটি কোমা মিস করেন তবে আমার জন্য হুররে!

33

সংস্থার জন্য প্রতি সুযোগে একটি varবিবৃতি ব্যবহার করা সাধারণ । সমস্ত "স্কোপস" কোডটি আরও পঠনযোগ্য করে তুলতে একই ধরণের অনুসরণ করে। তদ্ব্যতীত, ইঞ্জিন যাইহোক, সেগুলি সর্বোপরি "উত্তোলন" করে। সুতরাং আপনার ঘোষণাগুলি একত্রে রাখলে কী আরও প্রকৃতপক্ষে ঘটবে তা নকল করে।


6
আপনি ঘোষণাগুলি একই 'বর্ণ' ঘোষণাকে ভাগ না করে একসাথে রাখতে পারেন। আমি jslint (আপনার লিঙ্ক) এ প্রদত্ত ব্যাখ্যাগুলি বুঝি এবং গ্রহণ করি তবে আমি উপসংহারটি ভাগ করি না। উপরে যেমন বলা হয়েছে, এটি অন্য যে কোনও কিছুর চেয়ে স্টাইলের বিষয়। জাভা বিশ্বে (অন্যদের মধ্যে), বিপরীত (প্রতি লাইনে একটি ঘোষণার) পাঠযোগ্যতার জন্য প্রস্তাবিত।
ফিলিহো

আরও পঠনযোগ্য? লোকেরা তাদেরকে এক লাইনে রাখার একমাত্র কারণ আপনি উল্লেখ করেছেন জেএস-নির্দিষ্ট কারণ: জেএস সমস্ত ঘোষণাকে শীর্ষে নিয়ে যায়। যদি এটি না করে, তবে আমরা সকলেই আমাদের ওয়ারগুলি যেখানে ব্যবহৃত হয় তার কাছাকাছি ঘোষনা করব।
দানিয়াল আয়তেকিন

@ ভোলআরন যা কেস নয়, এবং এটি varবিবৃতিটির সর্বমোট ভুল বোঝাবুঝি । ঠিক বিপরীতটি সত্য। ডকুমেন্টেশন এবং এই উদাহরণটি দেখুন
jackweirdy

@ জ্যাকউয়ার্ডি আপনি সঠিক আছেন এবং পুরানো ব্রাউজারগুলির ক্ষেত্রে এটি ছিল দুর্বল বাস্তবায়ন বা বাগ। আমি তখন থেকে আমার মন্তব্য মুছে ফেলেছি।
ভোলআরন

29

এটি এইভাবে করার সময় এটি আরও বেশি পঠনযোগ্য:

var hey = 23;
var hi = 3;
var howdy 4;

তবে কোডের মতো কম জায়গা এবং রেখা লাগে:

var hey=23,hi=3,howdy=4;

এটি স্থান বাঁচানোর জন্য আদর্শ হতে পারে তবে জাভাস্ক্রিপ্ট সংকোচকারীরা এটি আপনার জন্য পরিচালনা করতে দিন।


15

এই মত হতে পারে

var variable1 = "hello world"
, variable2 = 2
, variable3 = "how are you doing"
, variable4 = 42;

প্রথম বা শেষ পরিবর্তনশীল পরিবর্তন করার সময় বাদ দিয়ে এটি বজায় রাখা এবং পড়া সহজ।


6
সাধারণত কমা-ফার্স্ট ব্যবহার করে সেমিকোলন সেই সমস্যাটি রোধ করতে একটি নতুন লাইনে চলে যায়। var ভেরিয়েবল 1 = "হ্যালো ওয়ার্ল্ড" \ n, ভেরিয়েবল 2 = 2 \ n, ভেরিয়েবল 3 = "আপনি কেমন করছেন" \ n, ভেরিয়েবল 4 = 42 \ n; \ n
পরিত্রে ব্রায়ানফ্রেড

2
এটি হ্যাসেল সিনট্যাক্স। আমি অনুভব করি যে এটি কোনওভাবেই জাভাস্ক্রিপ্টে প্রস্তাবিত / সাধারণ অনুশীলন নয়
shamanSK

14

এটি কেবল ব্যক্তিগত পছন্দের বিষয়। এই দুটি উপায়ের মধ্যে কোনও পার্থক্য নেই, যদি আপনি সাদা স্থানটি ছড়িয়ে দেন তবে দ্বিতীয় ফর্মের সাথে সংরক্ষণ করা কয়েকটি বাইট বাদে।


দ্বিতীয়টি কয়েকটা বাইট সংরক্ষণ করে।
সোফি আল্পার্ট

বেন আল্পার্ট: আপনি কীভাবে দেখেন?
জোশ স্টোডোলা

যদি আপনি 'ওয়ার foo = "হ্যালো", বার = "ওয়ার্ল্ড" এর চেয়ে শ্বেতস্পেসটি ছড়িয়ে দেন; ঘোষণায় 'var foo = "হ্যালো"; ভার বার = "ওয়ার্ল্ড" এর চেয়ে কম অক্ষর নেওয়া হয়; আপনার কাছে যদি কোনও জনপ্রিয় সাইট থাকে তবে জেএসে কয়েকটি বাইট সংরক্ষণ করা সহায়তা করতে পারে (আপনিও ভেরিয়েবলের নামগুলি হ্রাস করতে চান)
ব্রায়ান ক্যাম্পবেল

আমি জাভাস্ক্রিপ্ট মিনিফায়ারগুলির উত্থানের কারণে উল্লেখযোগ্যভাবে গুগল ক্লোজার কমপ্লেয়ারের (তথাকথিত) সাধারণ মোডের কারণে এটি সংরক্ষিত বাইটগুলি এই সময়ে অপ্রাসঙ্গিক হিসাবে দেখছি।
ব্রায়ান ফিল্ড

1
@ সিন্ডেক্সের শব্দার্থকতা যখন একই রকম হয় তখন @ ওয়েবেনেস্টো সিনট্যাক্স থেকে কোনও কার্য সম্পাদন করে না। কেউ এখনই কোড সম্পাদন করবে না তবে প্রথমে এটি বিশ্লেষণ করবে এবং শব্দার্থবিজ্ঞানের বিশ্লেষণ করবে - এটি যেখানে ঘোষণার শৈলীর উভয়ই সমান হয়।
ইসাইলিজা

14

ECMAScript6 পরিচয় করিয়েছে ডেস্ট্রাকচারিং অ্যাসাইনমেন্ট যা বেশ সুন্দর কাজ করে:

[a, b] = [1, 2] aসমান হবে 1এবং সমান bহবে 2


এটি প্রশ্নের উত্তর দেয় না, তবে বর্ণিত উভয় পদ্ধতির জন্য এটি আরও ভাল বিকল্প হতে পারে।
svarog

1
আমি মনে করি আপনার যদি ভেরিয়েবলের দীর্ঘ তালিকা থাকে তবে আপনার পদ্ধতির ক্ষেত্রে বাস্তবে কার্যকর হবে না। কোন ভেরিয়েবলের সাথে কোন মানটি সম্পর্কিত এবং এটির ত্রুটি থেকে আপনার সুরক্ষা নেই তা বলা শক্ত bad খারাপ সংশ্লেষের ক্ষেত্রে আপনি ঘটনাক্রমে কোনও উপাদানটিকে অ্যারে থেকে সরিয়ে ফেলতে পারেন। উদাহরণ: let [aVar, bVar, cVar, xVar, yVar, zVar] = [10, 20, 30, 40, 50]; সুতরাং, ব্যক্তিগতভাবে আমি এটি সুপারিশ করি না।
কিরিল রেজজনিকভ

1
আপনি যদি একই মানগুলির সাথে প্রচুর ভেরিয়েবল সেট করতে চান তবে সহজ y উদাহরণস্বরূপ একটি লুপে শূন্যে পুনরায় সেট করতে ব্যবহার করা।
নিক

হ্যাঁ! এই আমি খুঁজছিলাম ছিল। বিশেষত যদি আপনি একটি দ্বি মাত্রিক জুটি বা বহুমাত্রিক মানগুলি সংজ্ঞায়িত করতে চান তবে এখনও অ্যারে নয়।
ইউজিন কার্দাশ

11
var variable1 = "Hello World!";
var variable2 = "Testing...";
var variable3 = 42;

এর চেয়ে বেশি পঠনযোগ্য:

var variable1 = "Hello World!",
    variable2 = "Testing...",
    variable3 = 42;

তবে তারা একই কাজ করে।


"ফাইল স্পেস" কম ব্যবহার করেন? আমার মনে হয় আপনার কিছু করার জন্য কিছু ব্যাখ্যা আছে।
জোশ স্টোডোলা

@ জোস্টস্টোডোলা আমার কাছে একই ফাইলের স্থান দেখায়। পরিবর্তে এর থেকে var<space>, এর<space><space><space><space>
ওয়ার্ল্ডএসএস

@ ওয়ার্মএসএস এটি var<space>বা var<tab>বনাম না থাকলেই না <tab>। তবুও মূলত মূট।
এমপ্যাগ

9

ES6 ব্যবহার করুন ডিস্ট্রাক্টরিং অ্যাসাইনমেন্ট: এটি অ্যারে থেকে মানগুলি বা বস্তুগুলির বৈশিষ্ট্যগুলি পৃথক ভেরিয়েবলগুলিতে আনপ্যাক করবে।

let [variable1 , variable2, variable3] = 
["Hello World!", "Testing...", 42];

console.log(variable1); // Hello World!
console.log(variable2); // Testing...
console.log(variable3); // 42


4
এটি একটি ভয়ানক ধারণা, বিশেষত যদি আপনাকে প্রায় 10 ভেরিয়েবলগুলি বরাদ্দ করতে হয়।
কিরিল রেজনিকভ

7

আমার একমাত্র, এখনও কমাতে প্রয়োজনীয় ব্যবহার লুপের জন্য:

for (var i = 0, n = a.length; i < n; i++) {
  var e = a[i];
  console.log(e);
}

আমি এখানে জাভাস্ক্রিপ্টে ঠিক আছে কিনা তা সন্ধান করতে গিয়েছিলাম।

এমনকি এটি কাজ করে দেখেও, একটি প্রশ্ন অবধি রয়ে গেছে যে এনটি ফাংশনের স্থানীয়।

এটি যাচাই করে, এন স্থানীয়:

a=[3,5,7,11];
(function l () { for (var i = 0, n = a.length; i < n; i++) {
  var e = a[i];
  console.log(e);
}}) ();
console.log(typeof n == "undefined" ?
  "as expected, n was local" : "oops, n was global");

এক মুহুর্তের জন্য আমি নিশ্চিত ছিলাম না, ভাষার মধ্যে স্যুইচিং।


7

যদিও উভয়ই বৈধ, তবুও অনভিজ্ঞ অভিজ্ঞ বিকাশকারীদের দ্বিতীয় স্থানটিতে সমস্ত জায়গায় বর্ণ বিবরণী দেওয়া এবং উত্তোলনের সমস্যা সৃষ্টি করে নিরুৎসাহিত করে। ফাংশনের শীর্ষে যদি ফাংশনটিতে শুধুমাত্র একটি ভের থাকে তবে পুরোটি কোডটি ডিবাগ করা সহজ। এর অর্থ এই হতে পারে যে লাইনগুলি যেখানে ভেরিয়েবলগুলি ঘোষিত হয় সেগুলি কারও পছন্দ মতো পরিষ্কার হয় না।

আমি মনে করি যে বাণিজ্য বন্ধ করার পক্ষে এটি মূল্যবান, যদি এর অর্থ যদি কোনও বিকাশকারীকে তারা যেভাবেই মনে করেন সেখানে 'var' বাদ দিতে ছাড়েন।

লোকেরা জেএসলিন্ট সম্পর্কে অভিযোগ করতে পারে, আমিও তাই করি, তবে এটির অনেকটা ভাষা নিয়ে সমস্যা সমাধানের দিকে নয়, কোডারদের খারাপ অভ্যাস সংশোধন করার জন্য এবং তাই তারা যে কোডটি লিখেছেন তাতে সমস্যা রোধ করার দিকে লক্ষ্য করা যায়। অতএব:

"ব্লক স্কোপ সহ ভাষাগুলিতে সাধারণত প্রস্তাব দেওয়া হয় যে প্রথম ব্যবহারের স্থানে ভেরিয়েবলগুলি ঘোষণা করা উচিত But তবে জাভাস্ক্রিপ্টের ব্লকের সুযোগ নেই, তাই ফাংশনের শীর্ষে ফাংশনের সমস্ত ভেরিয়েবলগুলি ঘোষণা করা বুদ্ধিমানের কাজ It প্রস্তাবিত যে ফাংশন প্রতি একক বর্ণ বিবৃতি ব্যবহার করা হবে। " - http://www.jslint.com/lint.html#scope


6

আমি মনে করি এটি ব্যক্তিগত পছন্দের বিষয়। আমি নিম্নলিখিত পদ্ধতিতে এটি করতে পছন্দ করি:

   var /* Vars */
            me = this, that = scope,
            temp, tempUri, tempUrl,
            videoId = getQueryString()["id"],
            host = location.protocol + '//' + location.host,
            baseUrl = "localhost",
            str = "Visit W3Schools",
            n = str.search(/w3schools/i),
            x = 5,
            y = 6,
            z = x + y
   /* End Vars */;

6

একক বিবৃতি সংস্করণ (একক ভেরি ) এড়ানোর আর একটি কারণ হ'ল ডিবাগিং। যদি কোনও অ্যাসাইনমেন্ট লাইনে কোনও ব্যতিক্রম ছুঁড়ে দেওয়া হয় তবে স্ট্যাক ট্রেস কেবল একটি লাইন দেখায়।

যদি আপনার 10 টি ভেরিয়েবলগুলি কমা সিনট্যাক্সের সাথে সংজ্ঞায়িত করা হত তবে আপনারা সরাসরি জানেন যে কোনটি অপরাধী।

স্বতন্ত্র বিবৃতি সংস্করণ এই অস্পষ্টতায় ভোগে না।


2

"কোহশন ওভার কাপলিং" ধারণাটি কেবলমাত্র বস্তু / মডিউল / ফাংশনগুলির চেয়ে বেশি সাধারণভাবে প্রয়োগ করা যেতে পারে। এটি এই পরিস্থিতিতে পরিবেশন করতে পারে:

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

"কম সংযুক্তি প্রায়শই একটি সুগঠিত কম্পিউটার সিস্টেম এবং একটি ভাল ডিজাইনের লক্ষণ এবং উচ্চ সংহতির সাথে মিলিত হলে উচ্চ পাঠযোগ্যতা এবং রক্ষণাবেক্ষণের সাধারণ লক্ষ্যগুলিকে সমর্থন করে।"

http://en.wikipedia.org/wiki/Coupling_(computer_programming)

সুতরাং প্রথমটি চয়ন করুন।


1
এটি কীভাবে সংযুক্তি বা মিলনের সাথে সম্পর্কিত তা দেখতে আমি ব্যর্থ। বিশদ যত্ন?
এডসন মদিনা

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

কাপলিং হল বিভিন্ন মডিউল / অবজেক্ট / ফাংশনগুলির মধ্যে আন্তঃনির্ভরতা সম্পর্কে, কোডের লাইন নয়!
এডসন মদিনা

1
মূলত এটি মডিউলগুলির বিষয়ে ছিল, হ্যাঁ, তবে ধারণাটি সাধারণভাবে প্রয়োগ করা যেতে পারে, এমনকি সংজ্ঞা প্রদর্শনগুলিতে আপনার নিজের অবজেক্ট / ফাংশনগুলির অন্তর্ভুক্তি হিসাবে।
ম্যাগনে

2

একটি পুরাতন পোস্ট, আমি জানি, তবে সহকর্মী গুগলারের জন্য দৃষ্টিভঙ্গির একটি ছোট বিশদ যুক্ত করতে:

রক্ষণাবেক্ষণের সমস্যাটি খুব সহজেই যেমন সামান্য ফর্ম্যাটিংয়ের সাহায্যে কাটিয়ে উঠতে পারে।

let
  my_var1 = 'foo',
  my_var2 = 'bar',
  my_var3 = 'baz'
;

আমি এই ফর্ম্যাটটিকে ব্যক্তিগত পছন্দ হিসাবে বিবেচনা করি। আমি একক ঘোষণার জন্য অবশ্যই এই ফর্ম্যাটটি এড়িয়ে চলেছি বা অবশ্যই এটি যেখানে কাজগুলি আপ্লুত করে।


1

আমি বিশ্বাস করি যে আমরা ইএস use ব্যবহার শুরু করার আগে একক বর্ণ ঘোষণার সাথে যোগাযোগ করা ভাল বা খারাপ ছিল না (যদি আপনার লিটারার থাকে এবং 'use strict'এটি সত্যিই পছন্দের স্বাদে ছিল। তবে এখন জিনিসগুলি আমার জন্য পরিবর্তিত হয়েছে। বহুবিধ ঘোষণার পক্ষে আমার চিন্তাভাবনা রয়েছে :

  1. এখন আমাদের দুটি নতুন ধরণের ভেরিয়েবল রয়েছে এবং varঅচল হয়ে পড়েছে। constআপনার সত্যিকারের প্রয়োজনবোধে সর্বত্র ব্যবহার করা ভাল অনুশীলন let। তাই প্রায়শই আপনার কোডে কোডের মাঝামাঝি সময়ে অ্যাসিগমেন্ট সহ ভেরিয়েবল ডিক্লেয়ারেশন থাকে এবং আপনার ব্লক স্কোপিংয়ের কারণে আপনি প্রায়শই ছোট পরিবর্তনগুলির ক্ষেত্রে ব্লকের মধ্যে পরিবর্তনশীল স্থানান্তরিত করতে পারেন। আমি মনে করি যে মাল্টিলাইন ঘোষণার মাধ্যমে এটি করা আরও বিশ্বাসযোগ্য।

  2. ES6 সিনট্যাক্স আরও বৈচিত্র্যময় হয়ে উঠেছে, আমরা পেয়েছি ডিস্ট্রাক্টর, টেম্পলেট স্ট্রিং, তীর ফাংশন এবং alচ্ছিক অ্যাসিগমেন্টস। আপনি যখন একক বর্ণের সমস্ত বৈশিষ্ট্যগুলি ভারীভাবে ব্যবহার করেন তখন তা পঠনযোগ্যতা ব্যথা করে।


0

আমি মনে করি প্রথম উপায় (একাধিক ভার্স) সবচেয়ে ভাল, আপনি অন্যথায় এটি শেষ করতে পারেন (নকআউট ব্যবহার করে এমন একটি অ্যাপ্লিকেশন থেকে), যা আমার মতে পড়া কঠিন:

    var categories = ko.observableArray(),
        keywordFilter = ko.observableArray(),
        omniFilter = ko.observable('').extend({ throttle: 300 }),
        filteredCategories = ko.computed(function () {
            var underlyingArray = categories();
            return ko.utils.arrayFilter(underlyingArray, function (n) {
                return n.FilteredSportCount() > 0;
            });
        }),
        favoriteSports = ko.computed(function () {
            var sports = ko.observableArray();
            ko.utils.arrayForEach(categories(), function (c) {
                ko.utils.arrayForEach(c.Sports(), function (a) {
                    if (a.IsFavorite()) {
                        sports.push(a);
                    }
                });
            });
            return sports;
        }),
        toggleFavorite = function (sport, userId) {
            var isFavorite = sport.IsFavorite();

            var url = setfavouritesurl;

            var data = {
                userId: userId,
                sportId: sport.Id(),
                isFavourite: !isFavorite
            };

            var callback = function () {
                sport.IsFavorite(!isFavorite);
            };

            jQuery.support.cors = true;
            jQuery.ajax({
                url: url,
                type: "GET",
                data: data,
                success: callback
            });
        },
        hasfavoriteSports = ko.computed(function () {
            var result = false;
            ko.utils.arrayForEach(categories(), function (c) {
                ko.utils.arrayForEach(c.Sports(), function (a) {
                    if (a.IsFavorite()) {
                        result = true;
                    }
                });
            });
            return result;
        });
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.