জাভাস্ক্রিপ্ট এবং লুয়ার মধ্যে সূক্ষ্ম পার্থক্য [বন্ধ]


121

আমি কেবল জাভাস্ক্রিপ্ট পছন্দ করি। এটি এত মার্জিত (ব্যাকগ্রাউন্ডে লভস্ট্রাক ফ্যানবয়ের দীর্ঘশ্বাস ফেলে যাওয়ার শান্ত শব্দটি কল্পনা করুন)।

সুতরাং, সম্প্রতি আমি লুভায়ের সাথে löve2d ফ্রেমওয়ার্কের মাধ্যমে খেলেছি (দুর্দান্ত!) - এবং আমার মনে হয় লুয়াও দুর্দান্ত। তারা যেভাবে আমি এটি দেখছি, সেই দুটি ভাষা খুব মিল।

মত স্পষ্ট পার্থক্য আছে

  • বাক্য গঠন
  • সমস্যা ডোমেন
  • লাইব্রেরি
  • প্রকার (কিছুটা)

তবে আরও সূক্ষ্ম কোনটি? জাভা স্ক্রিপ্ট কোডার এমন কিছু আছে যা লুয়ায় কিছুটা আলাদা কাজ করে? এমন কি কোনও সমস্যা আছে যা অন্য ভাষার জন্য চেষ্টা করা এক ভাষার অভিজ্ঞ কোডারকে স্পষ্ট নাও হতে পারে?

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

কিন্তু পরিবর্তনশীল সুযোগ, অপরিবর্তনীয়তা বা এই জাতীয় কিছুতে কি পার্থক্য রয়েছে?


8
আমার মত যারা, যারা সামগ্রিক তুলনা খুঁজছিলেন এবং দুর্ঘটনার দ্বারা এখানে শেষ হয়ে গিয়েছিলেন, নিম্নলিখিতটি একটি সুন্দর ওভারভিউ: phrogz.net/lua/LearningLua_FromJS.html
তাও

এটি শুরু করার জন্য আপনার জানা দরকার এমন সমস্ত পার্থক্য ব্যাখ্যা করে এটি একটি তিনটি অংশের সিরিজ: oreilly.com/learning/…
চারআট

উত্তর:


189

আরও কিছু পার্থক্য:

  • লুয়ার কর্টিনগুলির জন্য স্থানীয় সমর্থন রয়েছে ।
    • আপডেট : জেএসে এখন জেনারেটরের অভ্যন্তরে ফলন কীওয়ার্ড রয়েছে যা এটি কর্টাইনগুলিকে সমর্থন করে।
  • লুয়া কোনও তুলনা অপারেটরগুলির জন্য প্রকারের মধ্যে রূপান্তর করে না । জেএসে, কেবল ===এবং !==জগল টাইপ করবেন না।
  • লুয়ার এক্সপেনসিয়েশন অপারেটর রয়েছে ( ^); জেএস করে না। জাতীয় তিন শর্তসাপেক্ষ অপারেটর (সহ বিভিন্ন অপারেটর, ব্যবহার ?:বনাম and/or), এবং, 5.3, bitwise অপারেটরদের (হিসাবে &, |ইত্যাদি বনাম metamethods )।
    • আপডেট : জেএসের এখন ক্ষয়ক্ষতি অপারেটর রয়েছে **
  • জেএসের ইনক্রিমেন্ট / হ্রাস, প্রকার অপারেটর ( typeofএবং instanceof), অতিরিক্ত অ্যাসাইনমেন্ট অপারেটর এবং অতিরিক্ত তুলনা অপারেটর রয়েছে।
  • ইন জাতীয় , ==, ===, !=এবং !==অপারেটরদের তুলনায় কম প্রাধান্য হয় >, >=, <, <=। লুয়ায়, সমস্ত তুলনা অপারেটরগুলি একই নজির
  • লুয়া লেজ কল সমর্থন করে
  • লুয়া ভেরিয়েবলের একটি তালিকাতে অ্যাসাইনমেন্ট সমর্থন করে । যদিও এটি জাভাস্ক্রিপ্টে এখনও স্ট্যান্ডার্ড নয় , মোজিলার জেএস ইঞ্জিন (এবং অপেরা একটি পরিমাণে) " ডিস্ট্রাকচারিং অ্যাসাইনমেন্ট " নামে জেএস 1.7 (ফায়ারফক্স 2 এর অংশ হিসাবে উপলব্ধ) থেকে একটি অনুরূপ বৈশিষ্ট্য সমর্থন করেছে । জেএসে নির্মাণ করা আরও সাধারণ, কারণ এটি অ্যাসাইনমেন্ট ব্যতীত অন্য প্রসঙ্গে যেমন ফাংশন সংজ্ঞা এবং কল এবং লুপ ইনিশিয়ালাইজারগুলিতে ব্যবহার করা যেতে পারে । কিছুক্ষণের জন্য ECMAScript (জাভাস্ক্রিপ্টের পিছনে ভাষার মান) এর পরিবর্তিত কার্যনির্বাহীকরণ প্রস্তাবিত সংযোজন।
    • আপডেট : ডেস্ট্রাকচারিং (এবং ডেস্ট্রাকচারিং অ্যাসাইনমেন্ট) এখন ইসমাস্ক্রিপ্টের জন্য অন্যতম অনুকূলে রয়েছে - ইতিমধ্যে অনেক ইঞ্জিনে প্রয়োগ করা হয়েছে।
  • ইন অ্যাপ্লিকেশন Lua , আপনি পারেন অপারেটার জমিদার
  • ইন অ্যাপ্লিকেশন Lua আপনার সাথে পরিবেশের নিপূণভাবে করতে getfenvএবংsetfenv অ্যাপ্লিকেশন Lua 5.1 অথবা _ENVমধ্যে অ্যাপ্লিকেশন Lua 5.2 এবং 5.3
  • ইন জাতীয় , সব ফাংশন variadic হয়। ইন অ্যাপ্লিকেশন Lua ফাংশন করা আবশ্যক স্পষ্টভাবে variadic হিসেবে ঘোষণা
  • Foreachজেএস মধ্যে অবজেক্ট বৈশিষ্ট্য লুপ। Foreach মধ্যে অ্যাপ্লিকেশন Lua (যা শব্দ ব্যবহার for) iterators উপর loops এবং আরও সাধারণ হয়।
    • আপডেট : জেএসের এখনই ইটারেবলস রয়েছে , যার মধ্যে অনেকগুলি নিয়মিত ডেটা স্ট্রাকচারের মধ্যে অন্তর্নির্মিত হয় যেমন আপনি আশা করেন, যেমন Array। এগুলি for...ofসিনট্যাক্সের সাহায্যে লুপ করা যায় । নিয়মিত অবজেক্টের জন্য, কেউ তাদের নিজস্ব পুনরাবৃত্তকারী কার্যগুলি প্রয়োগ করতে পারে। এটি এটিকে লুয়ার খুব কাছাকাছি নিয়ে আসে।
  • জেএসের বৈশ্বিক এবং কার্যকারিতা সুযোগ রয়েছে। অ্যাপ্লিকেশন Lua হয়েছে বিশ্বব্যাপী এবং ব্লক সুযোগ । কন্ট্রোল স্ট্রাকচার (যেমন if, for, while) নতুন পরিচয় করিয়ে ব্লক

    • স্কোপিং বিধিগুলির মধ্যে পার্থক্যের কারণে, একটি বহিরাগত ভেরিয়েবলের ক্লোজারের রেফারেন্সিং (লুয়া পার্লেন্সে "upvalues" নামে পরিচিত) লুয়া এবং জাভাস্ক্রিপ্টে আলাদাভাবে পরিচালনা করা যেতে পারে । এটি সাধারণত লুপগুলিতে বন্ধ হওয়ারfor সাথে অভিজ্ঞতা হয় এবং কিছু লোককে অবাক করে তোলে। ইন জাভাস্ক্রিপ্ট , একটি লাশ forলুপ, একটি নতুন সুযোগ পরিচয় করিয়ে না তাই কোনো ফাংশন লুপ শরীরের সমস্ত রেফারেন্স ঘোষিত একই বাইরের ভেরিয়েবল । লুয়ায়, forলুপের প্রতিটি পুনরাবৃত্তি প্রতিটি লুপ ভেরিয়েবলের জন্য নতুন স্থানীয় ভেরিয়েবল তৈরি করে।

      local i='foo'
      for i=1,10 do
        -- "i" here is not the local "i" declared above
        ...
      end
      print(i) -- prints 'foo'

      উপরের কোডটি সমান:

      local i='foo'
      do
        local _i=1
        while _i<10 do
          local i=_i
          ...
          _i=_i+1
        end
      end
      print(i)

      ফলস্বরূপ, পৃথক পুনরাবৃত্তিতে সংজ্ঞায়িত ফাংশনগুলির প্রতিটি রেফারেন্সযুক্ত লুপ ভেরিয়েবলের জন্য আলাদা আলাদা আপভ্যালু থাকে। লুয়ায় বন্ধের বাস্তবায়ন সম্পর্কিত নিকোলাস বোলার জবাবগুলি দেখুন? এবং " একটি লুপ ভেরিয়েবলের উপর বন্ধের সঠিক শব্দার্থকগুলি কী? ", এবং " জেনেরিকের জন্য শব্দার্থবিজ্ঞান "।

      আপডেট : জেএস এখন ব্লক সুযোগ আছে। ভেরিয়েবলগুলি ব্লক স্কোপ সহ সম্মানিত letবা constসম্মানিত।

  • জেএসে পূর্ণসংখ্যার লিটারালগুলি অষ্টালে থাকতে পারে।
  • জেএসের সুস্পষ্ট ইউনিকোড সমর্থন রয়েছে, এবং অভ্যন্তরীণভাবে স্ট্রিংগুলি ইউটিএফ -16 এ এনকোড করা হয়েছে (সুতরাং এগুলি জোড়া বাইটের ক্রম)। বিভিন্ন অন্তর্নিহিত জাভাস্ক্রিপ্ট ফাংশনগুলি ইউনিকোড ডেটা ব্যবহার করে, যেমন "pâté".toUpperCase()( "PÂTÉ")। লুয়া ৫.৩ এবং তারপরে স্ট্রিং লিটারালগুলিতে ইউনিকোড কোড পয়েন্ট এস্কেপ সিকোয়েন্স রয়েছে (জাভাস্ক্রিপ্ট কোড পয়েন্ট এস্কেপ সিকোয়েন্সগুলির মতো একই সিনট্যাক্স সহ) পাশাপাশি বিল্ট-ইন utf8লাইব্রেরি, যা ইউটিএফ -8 এনকোডিংয়ের জন্য বেসিক সমর্থন সরবরাহ করে(যেমন ইউটিএফ -8 এ কোড পয়েন্টগুলি এনকোডিং করা এবং ইউটিএফ -8 কোড কোডগুলিতে ডিকোড করা, স্ট্রিংয়ে কোড পয়েন্টের সংখ্যা পাওয়া এবং কোড পয়েন্টের উপরে পুনরাবৃত্তি করা)। লুয়ার স্ট্রিংগুলি পৃথক বাইটের ক্রম এবং কোনও এনকোডিং বা স্বেচ্ছাসেবী বাইনারি ডেটাতে এটি পাঠ্য থাকতে পারে। লুয়ার কোনও বিল্ট-ইন ফাংশন নেই যা ইউনিকোড ডেটা ব্যবহার করে; এর আচরণ string.upperসি লোকেলের উপর নির্ভর করে।
  • ইন অ্যাপ্লিকেশন Lua , not, or, andকীওয়ার্ড জায়গা ব্যবহার করা হয় জাতীয় এর !, ||, &&
  • লুয়া~= "সমান নয়" এর জন্য ব্যবহার করে , যেখানে জেএস ব্যবহার করে !==। উদাহরণস্বরূপ if foo ~= 20 then ... end,।
  • লুয়া 5.3 এবং ~বাইনারি বিটওয়াইজ এক্সওআর জন্য আপ ব্যবহার , যেখানে জেএস ব্যবহার করে ^
  • ইন অ্যাপ্লিকেশন Lua , মান (ছাড়া কোনো ধরনের nilএবং NaN) একটি টেবিল সূচক ব্যবহার করা যাবে। ইন জাভাস্ক্রিপ্ট , সমস্ত অ-স্ট্রিং প্রকার (সাংকেতিক ব্যতীত) সূচক একটি বস্তু ব্যবহার করা হচ্ছে আগে স্ট্রিং রূপান্তর করা হয়। উদাহরণস্বরূপ, নিম্নলিখিত কোড মূল্যায়ন পর মান obj[1]হতে হবে "string one"জাভাস্ক্রিপ্ট মধ্যে, কিন্তু "number one"অ্যাপ্লিকেশন Lua মধ্যে: obj = {}; obj[1] = "number one"; obj["1"] = "string one";
  • ইন জাতীয় , বরাদ্দকরণ এক্সপ্রেশন হিসাবে গণ্য করা হয়, কিন্তু মধ্যে অ্যাপ্লিকেশন Lua তা নয়। সুতরাং, জাতীয় এর অবস্থায় বরাদ্দকরণ পারবেন if, whileএবং do whileবিবৃতি, কিন্তু অ্যাপ্লিকেশন Lua মধ্যে না if, whileএবং repeat untilবিবৃতি। উদাহরণস্বরূপ, if (x = 'a') {}বৈধ জেএস, তবে if x = 'a' do endলুয়া অবৈধ।
  • অ্যাপ্লিকেশন Lua ব্লক-scoped ফাংশন ভেরিয়েবল, ফাংশন যে ক্ষেত্র ডিক্লেয়ার করার জন্য অন্বিত চিনি আছে, এবং পদ্ধতি ( local function() end, function t.fieldname() end, function t:methodname() end)। জেএস এগুলি সমান চিহ্ন ( let funcname = function optionalFuncname() {}, objectname.fieldname = function () {}) দিয়ে ঘোষণা করে ।

6
লুয়ায়, লজিকাল অপারেটরগুলি (এবং, বা) একটি যুক্তি ফিরিয়ে দেয় return সমস্ত ফাংশনকে যে কোনও সংখ্যক পরামিতি দিয়ে ডাকা যেতে পারে; তবে প্রয়োজনীয় সংখ্যার সাথে সামঞ্জস্য করা হয় (যদি আপনি ... 'অতিরিক্ত আরগস' না ব্যবহার করেন)
জাভিয়ের

1
@ আরসিআইএক্স: luaconf.h দেখুন (এবং লুয়া 5.2 এ, এছাড়াও lparser.c এবং llimits.h)। সর্বাধিক স্থানীয় মান / ফাংশন = 200 লুয়া 5.1 এবং লুয়া 5.2 তে। সর্বাধিক মূল্যায়ন / ফাংশন = লুয়া 5.1-এ লুয়া 5.2-এ 255 (এবং এই গণনাটিতে ফাংশনের অভ্যন্তরে নির্মিত ক্লোজারগুলি "উত্তরাধিকারসূত্রে প্রাপ্ত "ও অন্তর্ভুক্ত রয়েছে)।
সন্দেহভাজন

8
আমি মনে করি আপনি তালিকায় 1-ভিত্তিক অ্যারে যুক্ত করতে পারেন, আপনি যখন অভ্যস্ত না হন তবে এটি বেশ বিরক্তিকর হতে পারে।
ইয়ান

2
শুধুমাত্র লুয়াতে শূন্য এবং মিথ্যা মিথ্যা - সুতরাং, উদাহরণস্বরূপ, 0 লুয়ার মধ্যে সত্যবাদী তবে জেএসে নয়। ইউনিকোড সমর্থন সম্পর্কে: লুয়া 5.3 কিছু সুস্পষ্ট ইউটিএফ -8 সমর্থন যুক্ত করেছে এবং পুরানো লুয়া সংস্করণগুলি স্ট্রিংগুলিতে রাখা ইউটিএফ -8 বাফারের সাথে বন্ধুত্বপূর্ণ (যেমন আপনি স্ট্রিং অনুসন্ধানের নিদর্শনগুলিতে ইউনিকোড ব্যবহার করতে পারেন)। ইউটিএফ -8 এর জেএস সমর্থনটি সঠিক নয় কারণ ভি 8 অভ্যন্তরীণভাবে একটি পুরানো 16-বিট উপস্থাপনা ব্যবহার করে, তাই আপনার ইউনিকোড স্ট্রিংগুলি (আশ্চর্য!) সারোগেট জোড়া দিয়ে শেষ হতে পারে যা ভাল ওল'ইউটিএফ -8 এর প্রয়োজন হবে না (এবং জিতেছে) লুয়ায় ঘটবে না)।
টাইলার

4
আমি এই তালিকাটি পছন্দ করেছি, তবে কীভাবে সূক্ষ্ম বাগগুলি ~=উস্কে দিতে পারে তা আমি দেখছি না । এটি সিনট্যাক্স ত্রুটিগুলিকে উস্কে দিতে পারে তবে এগুলি মোটেই সূক্ষ্ম নয়।
কিকিতো

12

কয়েকটি সূক্ষ্ম পার্থক্য যা আপনাকে কমপক্ষে একবারে ধরা দেবে:

  • সমান নয় ~=লুয়া বানান । জেএসে এটি হয়!=
  • লুয়া অ্যারেগুলি 1-ভিত্তিক - তাদের প্রথম সূচক 0 এর পরিবর্তে 1।
  • লুয়া অবজেক্টের পদ্ধতিগুলি কল করার জন্য পিরিয়ডের পরিবর্তে একটি কোলন প্রয়োজন। আপনি লিখতে a:foo()পরিবর্তে a.foo()

Want আপনি চাইলে একটি পিরিয়ড ব্যবহার করতে পারেন তবে selfভেরিয়েবলটি স্পষ্টভাবে পাস করতে হবে । a.foo(a)কিছুটা অসুবিধে লাগছে। বিস্তারিত জানার জন্য লুয়ায় প্রোগ্রামিং দেখুন ।


5
a.foo()
টীকাটির

11

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


8
একেবারে। খুব আলাদা লক্ষ্যগুলি একটি পরিষ্কার ভাষা থাকার জন্য একটি উচ্চ অগ্রাধিকার অন্তর্ভুক্ত। জাভাস্ক্রিপ্টে প্রচুর historicalতিহাসিক লাগেজ রয়েছে, লুয়া অবিচ্ছিন্ন যে কোনও কিছু চালিয়ে যায়।
জাভিয়ের

3
+1 টি। এমনকি তারা কীভাবে একেবারে অনুরূপ তা আমি দেখতে পাচ্ছি না, এ ছাড়া যে তারা উভয়ই স্ক্রিপ্টিংয়ের জন্য ব্যবহৃত হয় (যা খুব স্পষ্ট।)
সাশা চেদিগোভ

13
-1 (যদি আমি পারতাম) ভাষা ডিজাইনের সম্মুখভাগে এগুলি খুব মিল। লুয়াতে কেবল আরও বৈশিষ্ট্য রয়েছে এবং এটি আরও ছোট (দ্রুতও?) আমি মনে করি আপনি প্রয়োগের পছন্দগুলির সাথে ভাষা নকশাকে বিভ্রান্ত করছেন।
jpc

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

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

7

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


1
কারও কি এক মত কাজিন ভাই থাকতে পারে?
জামেশফিশার

এগুলি একই ডেটা কাঠামো, কেবলমাত্র পার্থক্য হ'ল টাইপ বর্ণনাকারক যাতে আপনি এগুলি আলাদা করে বলতে পারেন।
লিলিথ নদী

5
আরও সঠিক বিবৃতিটি হ'ল: অ্যারেগুলি তাদের "দৈর্ঘ্য" সদস্যের বিশেষ আচরণের সাথে অবজেক্ট।
tzenes

@eegg: নিশ্চিত, ক্যাথি এবং পুলি
outis

3

আমার মাথার উপরে

লুয়া ...

  1. কর্টিন সমর্থন করে
  2. একটি টেবিলের কী হিসাবে কেবল স্ট্রিং / সংখ্যাতে কোনও বাধা নেই। সবকিছু সচল.
  3. ত্রুটি পরিচালনার কিছুটা আনাড়ি। হয় আপনি কিছু পরিচালনা করেন না বা প্যাকল পদ্ধতি ব্যবহার করেন না
  4. আমি মনে করি যে আমি লেজিকাল স্কোপের মধ্যে পার্থক্য সম্পর্কে কিছু পড়েছি এবং লুয়ার মধ্যে এটি আরও ভাল।
  5. আমি যদি সঠিকভাবে স্মরণ করি তবে লুয়ায় নিয়মিত অভিব্যক্তি সমর্থন সীমাবদ্ধ

অ্যাপ্লিকেশন Lua করে আভিধানিক সুযোগ আছে। জাভাস্ক্রিপ্টের শুধুমাত্র ফাংশন সুযোগ রয়েছে has ভাল, মজিলা এবং রাইনোতে আপনি এখন 'বর্ণ' এর পরিবর্তে 'লেট' ব্যবহার করতে পারেন এবং সঠিক লেক্সিকাল স্কোপ পেতে পারেন; তবে এটি এখনও বহনযোগ্য নয়।
জাভিয়ের

1
লুয়ার স্ট্যান্ডার্ড স্ট্রিং লাইব্রেরিতে সীমিত প্যাটার্ন মেলানো ফাংশন অন্তর্ভুক্ত রয়েছে; তবে এলপিইজি (এছাড়াও একটি গ্রন্থাগার) রয়েছে, যা একটি সম্পূর্ণ ব্যাকরণের জন্য সহজেই ব্যবহারযোগ্য।
জাভিয়ের

আমি বলেছি যে এলইউএর "আরও ভাল" লেক্সিকাল স্কোপ রয়েছে তবে জাভাস্ক্রিপ্ট এটি নেই যে এটি নেই।
নার্ভাসভাবে

1
LPEG একটি অতিরিক্ত গ্রন্থাগার যা কোর Regex সমর্থন মানে আমাকে সীমাবদ্ধ হয়
নার্ভাসভাবে

স্ট্রিং কী এবং সংখ্যা কীগুলির মধ্যে কিছুটা বিধিনিষেধ রয়েছে, একই টেবিলে উভয়টিই খুব অগোছালো হয়ে যায়, কারণ # টেবিলের দৈর্ঘ্য রিটার্ন দেয়, সংখ্যায়িত সূচকগুলির পরিমাণ অনুসারে নয়, যে কোনও অভিধানের প্রবেশের সাথে দ্বন্দ্ব বোধ করবে (গণনার পরে সূচীকরণ শূন্য হবে) টেবিল সূচী)
ওয়েভ ফেরেলাইন

3

আমি এই প্রশ্নটি এবং উত্তরগুলি পছন্দ করেছি। দুটি কারণে ভাষাগুলি আমার কাছে বেশি না বলে মনে হচ্ছে:

উভয়ই ভেরিয়েবলগুলিতে ফাংশন বরাদ্দ করে, উড়তে ফাংশন তৈরি করতে পারে এবং ক্লোজার সংজ্ঞায়িত করতে পারে।


1

লুয়া এবং জাভাস্ক্রিপ্ট উভয়ই প্রোটোটাইপ বেস ভাষা।


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

1
গুরুত্বপূর্ণ পার্থক্য হ'ল জাভাস্ক্রিপ্ট কর্টিনগুলিকে সমর্থন করে না, সি এর সাথে খুব শক্তভাবে মিলিত হয় না এবং এম্বেডেড ভাষা হিসাবে সত্যই উপযুক্ত নয়। (কত মাইক্রোকন্ট্রোলারের জাভাস্ক্রিপ্ট প্রোগ্রাম হয়?) জাভাস্ক্রীপ্ট, অনেক Messier হয় উত্তরাধিকার gotchas এবং WATs (টন সঙ্গে destroyallsoftware.com/talks/wat ) - 1:40 থেকে। লুয়ার উপর একটি স্পার্টান শৃঙ্খলা চাপানো হয়েছে। জাভাস্ক্রিপ্ট অবশ্যই ব্রাউজারে খুব শক্তিশালী।
অ্যালেক্স জিয়ান

1

একটি পরীক্ষা প্রকাশ করে যে বর্তমান জাভাস্ক্রিপ্টও বস্তুগুলি প্রত্যাবর্তন করে বা লুয়ার মতো যুক্তির মত প্রকাশের অন্তত স্ট্রিংগুলি:

function nix(){
    alert(arguments[0]||"0");
} 
nix();
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.