পাইথনের লাইন-ব্রেকগুলির পরিচালনা কীভাবে জাভাস্ক্রিপ্টের স্বয়ংক্রিয় সেমিকোলন থেকে আলাদা?


41

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

function test(){
    // This will return 'undefined', because return is a valid statement
    // and  "john" is a valid statement on its own.
    return 
          "john"
}

এই গোটাছগুলির কারণে 'স্বয়ংক্রিয় অর্ধেকোলন সন্নিবেশটি হল'ভিল', 'সর্বদা জাভাস্ক্রিপ্টে সেমিকোলন ব্যবহার করুন' ইত্যাদি শিরোনাম সহ কয়েক ডজন নিবন্ধ রয়েছে etc.

তবে পাইথন-এ কেউ আর কখনও সেমিকোলন ব্যবহার করে না এবং এর ঠিক একই রকম গ্যাচচাস রয়েছে।

def test():
    # This will return 'undefined', because return is a valid statement
    # and  "john" is a valid statement on its own.
    return 
    "john"

ঠিক একই কাজ করে এবং এখনও পাইথনসের আচরণের কারণে কেউ মারাত্মক ভয় পায় না।

আমি মনে করি জাভাস্ক্রিপ্ট যেসব ক্ষেত্রে খারাপ ব্যবহার করে সেগুলি খুব কম মাত্রায় আপনার সহজে এড়াতে সক্ষম হওয়া উচিত। একটি নতুন লাইনে + মান ফিরে আসবে? মানুষ কি আসলেই অনেক কিছু করে?

কোন মতামত? আপনি জাভাস্ক্রিপ্টে সেমিকোলন ব্যবহার করেন এবং কেন?


3
এটি ঠিক একই রকম কাজ করে না। সেভিকলন সন্নিবেশটি জাভাস্ক্রিপ্টে অগত্যা, নতুন লাইন যেখানেই আসে না। এই উইকিপিডিয়া পৃষ্ঠায় দ্বিতীয় উদাহরণ দেখুন । সেমিকোলনটি exampleোকানো হয়নি যেখানে উদাহরণটিতে নতুন লাইন রয়েছে।
রেড

1
আমার বক্তব্যটি সেমিকোলন ব্যবহার করা এবং সেগুলি ঠিক একইরূপে কাজ না করার বিষয়টি ছিল না, মূল বিষয়টি ছিল জাভাস্ক্রিপ্ট এবং পাইথনের প্রান্তের ক্ষেত্রে একই ছিল। অবশ্যই কয়েকটি প্রান্তের ঘটনা রয়েছে যেখানে আপনাকে কী ঘটছে তা জানতে হবে। সেরা প্রবন্ধটি আমি এই বিষয়টিতে
আইনার

4
আমি জাভা স্ক্রিপ্টে সেমিকোলনগুলি একই কারণে বাক্যগুলিতে পিরিয়ড ব্যবহার করি। নিশ্চিত হোন যে দোভাষী সেগুলি ছাড়া আপনার বক্তব্যগুলি বুঝতে পারেন তবে এটি কেবল খারাপ রূপ bad
জেডি আইজ্যাকস

3
আপনার উদাহরণগুলিতে আপনি বৈধ অজগর লেখার বিষয়টি বিবেচনা করতে পারেন। মন্তব্য সূচকটি #`// 'নয়।
অ্যারন ডুফর

2
"স্পষ্টতই সর্বদা অন্তর্নিহিতের চেয়ে ভাল"

উত্তর:


62

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

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

অথবা, "স্পষ্টকৃতের তুলনায় সুস্পষ্ট ভাল" এর শর্তে তর্ক করা: পাইথনে, একটি নতুন লাইন ইতিমধ্যে সম্পূর্ণ স্পষ্ট, জাভাস্ক্রিপ্টে এটি অস্পষ্ট, সুতরাং আপনি এটি স্পষ্ট করে তুলতে অর্ধিকোলন যুক্ত করুন।


3
ওহ, এবং আপনি ব্যাককোটিস ব্যবহার করে মন্তব্যে কোড রাখতে পারেন।
টিডামাররা

1
স্বয়ংক্রিয় আধা-কোলন সন্নিবেশটি অপ্রত্যাশিত জিনিসগুলি শেষ করার ক্ষেত্রে একটি উত্তম উদাহরণ হ'ল: পেস্টবিন.
com

5
অজগর ক্ষেত্রে, নিয়মগুলি মোটামুটি সহজ: বিবৃতি লাইনব্রেকের অবসান হয় যদি না থাকে একটি অবৈধ মাল্টলাইন স্ট্রিং ("" ", '' '), একটি অনাবৃত ডিক ({}), একটি অনিবদ্ধ তালিকা ([]], বা অবিলম্বে একটি ব্যাকস্ল্যাশ না থাকে লাইনবন্ধনের আগে। জাভাস্ক্রিপ্টে, নিয়মগুলি উল্লেখযোগ্যভাবে আরও জটিল
অ্যারন ডুফর

5
99% ত্রুটিগুলি Coverাকা রাখা কেবলমাত্র এটির পক্ষে খুঁজে পাওয়া সত্যিই কঠিন behind অজগরগুলিতে তাদের পিছনে ফেলে রাখা ঠিক আছে কারণ 100% সমস্যার আওতায় রয়েছে এমন সহজ নিয়ম রয়েছে।
অ্যারন ডুফর

1
@ অ্যারন: আপনি "একটি বন্ধনী (()) এর একটি অনাবৃত সেট" ভুলে গেছেন। (কঠোরভাবে "একটি আনলসড টুপল" নয় কারণ প্যারেন্থিসগুলি কেবল টিপলসগুলির জন্য ব্যবহৃত হয় না))
জ্যাব

28

পাইথনে এটি যেভাবে কাজ করে তার থেকে বেশ মৌলিক পার্থক্য রয়েছে বলে আমি মনে করি। ইয়নার এগিলসন লিঙ্কযুক্ত পোস্টটি থেকে উদ্ধৃতি দিয়ে বলেছেন: "যদি পরের রেখার প্রথম টোকেন একই বিবৃতিটির অংশ হিসাবে পার্স করা যায় তবে একটি রেখার শেষে একটি সেমিকোলন বোঝানো হয় না"।

পাইথনে একটি লাইন বিরতি সর্বদা বিবৃতিটি শেষ করে, কিছু মোটামুটি সুস্পষ্ট ক্ষেত্রে যেমন বন্ধনীরূপী এক্সপ্রেশনের মধ্যে। অন্যদিকে জাভাস্ক্রিপ্ট, বিবৃতিটি শেষ করার আগে যতটা সম্ভব লাইন পার্স করার চেষ্টা করবে, সম্ভাব্যতার মতো জিনিসগুলিতে নিয়ে যাবে:

// Define a function and name it area.
area = function(r) {
    return r * r * 3.14159
}

// Fooled you! We're actually invoking it.
(14)

8
এখন এই এক এটি একটি মজার টুইস্ট। ভালো কিছু সহ 14 প্রতিস্থাপন (a + 1) ? do_something() : do_something_else();এবং হঠাৎ, এলাকার ফেরত মানে সেট করা do_something()বা do_something_else()এবং আপনি প্রবলভাবে বিভ্রান্ত বাম করছি।
রিড

20

আমি প্রায়শই উত্পাদনের মোডে আমার জেএস-ফাইলগুলি ছোট করি। মানে, মন্তব্য এবং লাইনব্রেকগুলি সরানো

সেমিকোলন ব্যবহার না করে, এটি আমার জাভাস্ক্রিপ্টটি ভেঙে দেবে।


8
ঠিক আছে, এটা বৈধ। তবে যদি আপনার মিনিমাইজারটি আসল পার্সার হয় তবে এটি প্রয়োজনীয় হিসাবে আবার এগুলি .োকাতে পারে। অথবা কেবল লাইনব্রেকগুলি অপসারণ করবেন না, => আপনি লাইনব্রেকগুলি রেখেছেন, অর্ধিকোলনগুলি হারাবেন, তারা মোটামুটি একই সংখ্যায় তাই কিছুই হারিয়ে যায়নি।
আইনার এগিলসন

2
@Einar Egilsson বন্ধ কম্পাইলার প্রকৃতপক্ষে এই আছে।
দেবতা

1
সমস্ত জিনিস সমান, একটি নিউলাইন সেমিকোলন হিসাবে একই সংখ্যক বাইট by আপনার মিনিমাইজারটি সমস্ত নতুন লাইন কেটে ফেলতে পারে তবে তারপরে সেমিকোলন হওয়া দরকার। এটি একটি এমনকি বিনিময়।
লোগান বেইলি

3
@ লোগান: এটি অবশ্যই একটি বাইট নিউলাইনগুলি ধরে নিচ্ছে, অবশ্যই ;-)
ক্যামেরন

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

5

আপনার বর্ণনা অনুসারে এটি কাজ করে না।

জাভাস্ক্রিপ্টটিতে অটোমেটিক সেমিকোলন সন্নিবেশ নামে একটি বৈশিষ্ট্য রয়েছে যেখানে মূলত পার্সার যদি একটি অবৈধ টোকেনের মুখোমুখি হয় এবং এর আগে শেষ টোকেনটি একটি লাইন ব্রেক ছিল, তবে পার্সারটি সেমিকোলন প্রবেশ করবে যেখানে লাইনব্রেক রয়েছে ak

এটা ভুল. উদাহরণ:

return
  1 + 2;

1একটি পুরোপুরি বৈধ টোকেন, তবে পার্সারটি সরাসরি এর পরেও একটি সেমিকোলন প্রবেশ করবে return

যেমন আপনি দেখতে পাচ্ছেন, এমনকি আপনি বলতে পারবেন না যে সেমিকোলনটি কোথায় ঘটবে।

স্বয়ংক্রিয়ভাবে সন্নিবেশ নিয়ে সমস্যা দ্বিগুণ:

  • একটির জন্য, লোকেরা একটি সেমিকোলন ছেড়ে যেতে পারে যেখানে স্বয়ংক্রিয় সন্নিবেশ নির্ধারণ করতে পারে না যে oneোকানো দরকার।
  • এছাড়াও, উপরের মতো সেমিকোলনটি intendedোকানো যেতে পারে যেখানে এটি উদ্দেশ্য নয়।

অবশ্যই, প্রতিটি বিবৃতি দেওয়ার পরে সেমিকোলন ব্যবহার করা কেবল ত্রুটির প্রথম উত্সকে সাহায্য করে।

যাইহোক, আপনি এখনই অনুমান হিসাবে, আমি বিশ্বাস করি যে সি-এর মতো সিনট্যাক্সে স্বয়ংক্রিয় সেমিকোলন সন্নিবেশ একটি খারাপ ধারণা is


1
ইসিএমএ স্ক্রিপ্ট স্পষ্টভাবে স্পষ্ট করে নির্দিষ্ট করে দেয় যে কোন ক্ষেত্রে একটি আধা-কোলন প্রবেশ করানো হবে, সুতরাং আপনার লাইনটি "আপনি ঠিক বলতে পারবেন না যে সেমিকোলন কোথায় হবে" ভুল আছে। সমস্যাটি হ'ল এটি কিছু ক্ষেত্রে অনাদায়ী, এটি কীভাবে কাজ করে বুঝতে পারে না এমন কাউকে শেখানো আরও কঠিন করে তোলে।
zzzzBov

1
@zzzzBov: হ্যাঁ, একটি নির্দিষ্ট স্পেসিফিকেশন আছে, তবে কোডিংয়ের সময় কারও কি সত্যিই মনে আছে সমস্ত ঘটনা? তুমি কি নিশ্চিত? প্রোগ্রামাররা অলস, এবং যথাযথভাবে তাই; যখন কোনও সহজ সরল কাজটি করে তখন তারা কোনও জটিল নিয়মটি মনে রাখতে চায় না। তাই তারা এটিকে মনে রাখার চেষ্টা করে around
সোভান্তে

আমি একমত যে আধা কোলন সন্নিবেশ মূলত অপ্রয়োজনীয়। আমি কেবল বলছি "আধা-কোলনগুলি কোথায় যাচ্ছে আপনার কোনও ধারণা নেই" এবং "আধা-কোলন সন্নিবেশের জন্য
অনুমানটি

1
@ সোভান্তে: তবে রিটার্নের উদাহরণটি আমাদের দেখায় যে আমাদের যাইহোক এই নিয়মগুলি জানতে হবে। সেখানে আপনি একটি সেমিকোলন ব্যবহার করেছিলেন তবে এটি আপনাকে যা করতে চায় তা করতে সহায়তা করে না। সুতরাং, ভাষাটির এই বৈশিষ্ট্যটি রয়েছে, আমাদের কাছে বিকল্প রয়েছে (1) সর্বত্র সেমিকোলনগুলি লেখার এবং নিয়মগুলি জানার জন্য তাই আমরা বুঝতে পারি কী ঘটবে (2) সর্বত্র সেমিকোলন না লিখে, এবং নিয়মগুলি বোঝার ফলে আমরা বুঝতে পারি কী হবে। সেই পছন্দটি দেওয়া হয়েছে বলে আমি মনে করি আমি বরং সেমিকোলনগুলি এড়িয়ে যাব
ইয়নার এগিলসন

4

আমি একটি সাধারণ কারণ বলতে চাই:

জাভাস্ক্রিপ্ট দেখতে "কিন্ডা জাভা-ইশ" বা "কিন্ডা সি-ইশ"। অবশ্যই এটি একটি গতিশীল ভাষা তাই এটি দেখতে অন্যরকম দেখাচ্ছে ... তবে এটির মুখোমুখি - এখানে বন্ধনী রয়েছে। ধনুর্বন্ধনী সহ ভাষাগুলিতে সাধারণত অর্ধিকোলন থাকে। প্রাকৃতিক রেফ্লেক্সেস লাথি মেরে আপনার আঙুলটিকে আঘাত করার আগে আধা সেমোন কী এর দিকে এগিয়ে যায় Enter

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


2

জাভাস্ক্রিপ্টে আধা-কোলন সন্নিবেশ ব্যবহার না করার বেশ কয়েকটি ভাল কারণ রয়েছে ।

এটি প্রাথমিকভাবে কারণ ইসিএমএসক্রিপ্ট স্ট্যান্ডার্ডে সংজ্ঞায়িত হিসাবে আধা-কোলন সন্নিবেশ কিছু ক্ষেত্রে অপ্রয়োজনীয়। @ সোভান্ট একটি ক্ষেত্রে উল্লেখ করেছেন returnযেখানে নিউলাইন ব্যবহারের ফলে সমস্যা দেখা দেবে।

তিনি যা উল্লেখ করেন না তা হ'ল আপনি সেমি-কোলনও ব্যবহার করছেন কিনা তা সমস্যার কারণ হবে কারণ আপনি এটি চান বা না চান সেমি-কোলন সন্নিবেশ ঘটবে।

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

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

যেসব লেখক কী কী সরঞ্জাম বেছে নিচ্ছেন সেগুলির পছন্দ নেই, কেবলমাত্র এমন একটি বিন্যাসে লেগে থাকা আরও সহজ যা বেশিরভাগ ক্ষেত্রে কাজ করে।


আহ, আমরা দুঃখিত, কিন্তু আপনার তৃতীয় অনুচ্ছেদ সংক্রান্ত, আমি কি করতে উল্লেখ করে আমার দ্বিতীয় টু শেষ বাক্য হবে। :)
সোভান্তে

হ্যাঁ, টুলিংয়ের সমস্যাটি বৈধ (যদিও ভাল মিনিফায়ারদের এটি পরিচালনা করা উচিত, উদাহরণস্বরূপ বন্ধ সংকলক)। তবে আমার মতে, 'রিটার্ন' উদাহরণের মতো জিনিস এড়াতে আমাদের যে কোনও উপায় এই নিয়মগুলি জানতে হবে। এবং একবার আমি নিয়মগুলি জানার পরে আমি বৈশিষ্ট্যটিও ব্যবহার করতে পারি, বিশেষত যেহেতু এটি কোডটি (আইএমও) আরও পঠনযোগ্য করে তোলে।
ইয়নার এগিলসন

1

আপনি যখন নিজের ফাইলগুলি জাভাস্ক্রিপ্ট ফাইলগুলি মিনিমাইজ করেন তখন সেমিকোলন ব্যবহার না করা ব্যর্থতার একটি রেসিপি। এ কারণেই আমি এতে ভয় পাই।


1

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


1

বেশিরভাগ ক্ষেত্রে জাভাস্ক্রিপ্টের এএসআই প্রত্যাশা অনুযায়ী জিনিসগুলি পরিচালনা করে। এএসআই সম্ভবত আপনার আচরণের আচরণ না করার একটি উদাহরণ এটি হ'ল:

var i = 0

(function() {
   // do something
})()

এটি অনামিকার ফাংশনটির 0সাথে ফাংশনটি কল করার অর্থ ব্যাখ্যা করা হবে , তারপরে ফলাফলটি কার্যকর করা। এই ক্ষেত্রে আপনি সম্ভবত একটি অ্যাসাইনমেন্ট করতে চেয়েছিলেন, তারপরে অবিলম্বে বেনামে ফাংশনটি কার্যকর করুন।

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

(একদিকে যেমন: ব্যক্তিগত / সাইড প্রকল্পগুলিতে কাজ করার সময় আমি সেমিকোলন ব্যবহার করি না কারণ আমি জানি যে অন্য কারও কোডটি বজায় রাখতে হবে না))


1

আপনার মত, আমি মনে করি এটি কিছুটা ভৌতিক। সেমিকোলন সন্নিবেশ সম্পর্কিত নিয়মগুলি জাভাস্ক্রিপ্টে যেমন ঠিক তেমন পাইথন এবং কফিস্ক্রিপ্টে সংজ্ঞায়িত হয়। সেমিকোলনগুলির সাথে পাইথন বা কফিস্ক্রিপ্ট কেউ লিটার করে না, তবে জাভাস্ক্রিপ্টকে আলাদাভাবে কেন ব্যবহার করা হয়?

আমার কাছে মনে হয় এটি প্রায় দশ বছর আগে থেকে সাধারণ জাভাস্ক্রিপ্ট কোডের খারাপ অবস্থার প্রতি অত্যধিক প্রতিক্রিয়া — জাভাস্ক্রিপ্টকে একটি দুর্বল, বগি, কুশ্রী, কোনও ভাল ভাষা হিসাবে দেখা হয়েছিল। এটি একটি বিব্রতকর ঘটনা ছিল। আপনি সম্ভবত জাভাস্ক্রিপ্টে ভাল কোড লিখতে পারেন নি!

তারপরে, লোকেরা এসেছিল এবং প্রমান করার চেষ্টা করেছিল যে আপনি জাভাস্ক্রিপ্টে সুন্দর, পরিষ্কার কোড লিখতে পারেন । " সর্বদা ব্যবহার সেমিকোলন" নিয়মটি এই তরঙ্গের অংশ ছিল। এবং সত্যি বলতে কী, এটি কয়েকটি পরিস্থিতি কিছুটা পরিষ্কার করে দিতে পারে।

কেন এখনও জাভাস্ক্রিপ্ট অন্যরকম আচরণ করা হয়?

জড়তা আছে। এবং এটি উপেক্ষা করা উচিত নয় যে লোকেরা সুস্পষ্টভাবে কাঠামোগত কোডের প্রশংসা করে তারা প্রায়শই সি-স্টাইলের ভাষা পছন্দ করে। সুস্পষ্টভাবে কাঠামোগত কোডের প্রশংসা করা লোকেরা প্রায়শই নন-সি স্টাইলের ভাষাগুলিতে চলে যায় (কফিস্ক্রিপ্টের মতো)।


0

ধারাবাহিকতার জন্য আমি জাভাস্ক্রিপ্টে তাদের কঠোরভাবে ব্যবহার করি। বেশিরভাগ লাইনে থাকলে

পাইথন এগুলি কিনার ক্ষেত্রে যেমন একটি একক লাইনে একাধিক বিবৃতি দেয়, জাভাস্ক্রিপ্ট তাদের থাকে এবং যেহেতু আপনি তাদের নিয়মিত ব্যবহার করতে পারাবেন আমি সেখানকার আদর্শের সাথে সামঞ্জস্য করছি they

আমি একই লাইনে একাধিক বিবৃতি ব্যবহার করতে পারি না এবং সেহেতু সেমিকোলনগুলি ব্যবহার করে ভবিষ্যদ্বাণী করি না।


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

0

আপনি যদি রেলগুলিতে আপনার ওয়েব অ্যাপ্লিকেশনটির জন্য বান্ডিল-ফু, এবং সম্পদ ব্যবস্থাপকের মতো কিছু ব্যবহার করেন তবে জাভাস্ক্রিপ্টে টোকেনের শেষে সেমিকোলনের মুখোমুখি না হলে এটি ভয়াবহভাবে ভেঙে যায়। সুতরাং এটি রাখা ভাল অনুশীলন।


ভাল, তিনটি, YUI কমপ্রেসর, বন্ধ সংকলক, এবং UglifyJS, সকলেই সেমিকোলন সন্নিবেশ করায়। জেএসমিনের রুবি বন্দরের সমস্যা আছে বলে আমি অবাক হই না।
বেনজামিন আতকিন

0

আইইয়ের সঠিক সংস্করণটি আমি মনে করতে পারি না, তবে কিছু ক্ষেত্রে রয়েছে যে সেমিকোলন অনুপস্থিত থাকলে আইই আক্ষরিক অর্থে ত্রুটি ঘটবে। আইআইআরসি হ'ল আপনি যখন বিশ্বব্যাপী সুযোগে থাকবেন এরকম কিছু:

var myFunc = function() {
  ...
}

যদি আপনি যোগ না করেন; বন্ধ বন্ধনী পরে, প্রোগ্রাম আসলে IE এর কিছু সংস্করণে ব্যর্থ হবে। এটি অন্যান্য কারণের সাথে (ক্রোকফোর্ডের সর্বদা তাদের সুস্পষ্টভাবে ব্যবহার করার পরামর্শ দিয়েছিল) সহ সর্বদা আমাকে এগুলি সর্বদা স্পষ্টভাবে ব্যবহার করতে পরিচালিত করেছে।

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