সংরক্ষিত জাভাস্ক্রিপ্ট


41

এর নাম ECMAScript 2015 এর হিসাবে, জাভাস্ক্রিপ্ট হয়েছে 33 সংরক্ষিত কিওয়ার্ড যেমন break, constএবং new, সেইসাথে 10 ভবিষ্যৎ সংরক্ষিত কিওয়ার্ড যেমন letএবং await

আপনার কাজটি ক্রিয়ামূলক জাভাস্ক্রিপ্ট কোড 3 লেখার সময় পরপর 1 স্বতন্ত্র সংরক্ষিত কীওয়ার্ড 2 সর্বাধিক সংখ্যক একসাথে চেইন করা ।

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

যদি আপনার কোডের একটি নির্দিষ্ট রানটাইম দরকার হয় তবে ব্যবহৃত সংরক্ষিত কীওয়ার্ডগুলি অবশ্যই প্রদত্ত পরিবেশে কোনও বিকল্প নেই।

সংরক্ষিত কীওয়ার্ডগুলির তালিকা

স্কোরিং এবং উদাহরণ

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

// score: 3
if (true) 0; else throw function() {}
             ^------------------^
// score: 2
let foo = typeof typeof void typeof void 0;
                             ^---------^
// score: 0
/* typeof default debugger */

// score: 0, doesn't halt or debugger is no-op, depending on the environment
debugger;

স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।


যারা আগ্রহী তাদের জন্য স্যান্ডবক্স আলোচনা
নিত

আমি মনে করি এটি যদি আপনি কীওয়ার্ডগুলির মধ্যে প্রথম বন্ধনীর অনুমতি না দেন তবে এটি আরও আকর্ষণীয় হতে পারে।
গম উইজার্ড

নতুন লাইনের অনুমতি আছে?
l4m2

@ l4m2 হ্যাঁ, এটি সাদা জায়গা।
নিত

1
@ l4m2 একই 43-পয়েন্ট সমাধান নিউলাইন ছাড়াও সম্ভব তাই সম্ভবত আপনি যে বিন্দুটি বানাতে চাইছেন তা আমি বুঝতে পারি না?
নিত

উত্তর:


53

43 শব্দ, 603 বাইট

উহম, এ কি একটা ফাঁকফোকর? আমার কী ধারণা নেই যে এটি কীভাবে আইনী জেএস, তবে এটি কার্যকর হয় এবং এটি প্রতিটি একক কীওয়ার্ড ব্যবহার করে।

new (class await
{
    break(){}
    case(){}
    catch(){}
    const(){}
    continue(){}
    debugger(){}
    default(){}
    delete(){}
    do(){}
    else(){}
    enum(){}
    export(){}
    extends(){}
    finally(){}
    for(){}
    function(){}
    if(){}
    implements(){}
    import(){}
    in(){}
    instanceof(){}
    interface(){}
    let(){}
    package(){}
    private(){}
    protected(){}
    public(){}
    return(){}
    static(){}
    super(){}
    switch(){}
    this(){}
    throw(){}
    try(){}
    typeof(){}
    var(){}
    void(){}
    while(){}
    with(){}
    yield(){}
})

3
জেএসের সাথে তেমন পরিচিত নয়, তবে ... এই প্রসঙ্গে ব্যবহার করার সময় কি এইগুলি আসলে কীওয়ার্ড হয় , বা কেবল স্ট্রিংগুলিতে কী কীওয়ার্ডের মতো একই লেজিকাল কাঠামো রয়েছে এবং কোটগুলি এড়াতে চিনি ব্যবহার করছে?
লুশেনকো

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

6
@ user202729 যদিও কেন? যখন এটি এত সহজ করা যায় তখন কেন এটি অতিরিক্ত জটিলভাবে দেখছেন? কোড-গল্ফিং সাধারণত যতটা সম্ভব সংক্ষিপ্ত কিছু করে থাকে তবে আমি ব্যক্তিগতভাবে এখনও পাঠযোগ্যতা এবং সরলতা কিছুটা বাড়িয়ে রাখতে পছন্দ করি (আমি জানি, আমি জানি, এটি কোনও কোড-গল্ফিং চ্যালেঞ্জ নয়)। কিছু উদাহরণ: আমি ব্যবহার করতে পছন্দ -1, i+1, i-1উপরে ~0, -~i, ~-iযখন আমি, যারা কোড-golfing এবং খুব পরিচিত নন জন্য পড়তে মাত্র কারণ এটি পরিষ্কার এর করতে ~এখনো। যদিও আমি অবশ্যই সর্বদা i+~jএবং i-~jগল্ফটি ব্যবহার করব এবং সেই একক বাইট i-j-1এবং i+j+1। ;)
কেভিন ক্রুইজসেন

2
হ্যাঁ, আমি এটি আরও জালিয়ে ফেলতে পারি, এবং বাইটটি গণনা করার চেষ্টা করতাম ... এর মতো একটি সূচনাটি if(this)return void typeof function(){} else debuggerআসা খুব কঠিন নয়, তবে এর পরে এটি কুরুচিপূর্ণ হয়ে যায়। এবং হ্যাঁ, এই সম্পূর্ণভাবে শনাক্তকারী কীওয়ার্ডগুলিকে সক্রিয় - কিন্তু তাদের কিছু তোমার জন্য আছে অনুক্রমে (যেমন তাদের ব্যবহার করার জন্য পাবে enum)। আমি কেবল এটিকে চূড়ান্ত দিকে নিয়েছি, তবে গল্ফিংয়ের কোডটি কী তা নয়? : পি
সিগুজা

1
@ ম্যাজিক নো, একটি শ্রেণি-পদ্ধতির নাম সরবরাহ করা কেবলমাত্র একটি ব্যাকরণগত প্রসঙ্গ যেখানে আক্ষরিক টোকেনগুলি সম্পত্তির নাম হিসাবে বিবেচিত হয়, এমনকি তারা সংরক্ষিত শব্দ হলেও। এটি মূলত একইরকম, শব্দার্থকভাবে করা obj["break"] = function (){}ইত্যাদি
অ্যাপসিলাররা

53

37 শব্দ

if (void this) {
  do {
    with (protected)
      for (public in private)
        typeof static instanceof new (function implements() {
          var let
          try {
            throw (class extends {} {})
          } catch (package) {
            yield
          } finally {
            debugger
          }
          return
        })()
    continue
    break
  } while (interface)
} else {
  switch (delete await) { default : 42 }
}

কীওয়ার্ড ব্যবহার করা হয়নি:

  • case প্রয়োজন :
  • const প্রয়োজন =
  • export কঠোর মোড প্রয়োজন
  • import কঠোর মোড প্রয়োজন
  • super প্রয়োজন constructor

7
আমি স্বীকার করেছি যে আমি হেসেছিলাম
নিকেল

48
এটি দেখতে সাধারণত জাভা বয়লারপ্লেট কোডের মতো, যেমন গণনা করা 1 + 2
এরিক ডুমিনিল

2
@ এরিকডুমিনিল এটিই আসল কারণ যা তাকে _ জাভা স্ক্রিপ্ট বলে।
wizzwizz4

5
@EricDuminil যে বেশ সহজ নয় 1 + 2। এই কোডের সম্পূর্ণ মান হ'ল জীবন, মহাবিশ্ব এবং সমস্ত কিছুর চূড়ান্ত প্রশ্নের উত্তর। এটা জটিল । :)
tsh

2
এটা ঠিক দুর্দান্ত।
পেড্রো এ 10

30

43 শব্দ, 302 299 বাইট

switch(void function(){for(const interface in public)do with(package)try{break}catch(private){if(typeof
this)throw yield static instanceof new class extends await{case(){return}super(){debugger}import(){}export(){}enum(){}}
else continue}finally{delete let}while(protected)var implements}){default:}

তাত্ত্বিক লোয়ারবাউন্ড 277 (প্রতিটি শব্দ দুটি একটি বাইট দ্বারা পৃথক)
l4m2

দুর্দান্ত কাজ, বর্তমানে আপনি কেবল অনুপস্থিত enum
নিট

10

21 24 26 শব্দ, 185 বাইট

+ 1 2 টি শব্দ আরনাউল্ডকে এবং +1 থেকে 12 মে 21 পর্যন্ত ধন্যবাদ!

void(function(){do{with({})if(typeof true in this)throw{}instanceof new(class extends{}{})
else return delete{}
try{break}finally{yield}
continue
}while(false)})()
switch({}){case{}:{}}

ধরে নিলাম আমি চ্যালেঞ্জটি বুঝতে পেরেছি, এটি 24 টি স্কোর। বন্ধনী, বন্ধনী এবং সাদা স্থান ছাড়া শব্দগুলি:

void function do with if typeof true in this throw instanceof new class extends else return delete try break finally yield continue while false switch case

24 শব্দ, 177 বাইট

"সত্য" এবং "মিথ্যা" ব্যতীত, যা সম্ভবত প্রশ্ন অনুসারে কীওয়ার্ড নয়।

void(function(){do{with({})if(typeof{}in this)throw{}instanceof new(class extends{}{})
else return{}
try{break}finally{yield}
continue
}while(delete{})})()
switch({}){case{}:{}}

শব্দ:

void function do with if typeof in this throw instanceof new class extends else return try break finally yield continue while delete switch case

(আমি দুর্ঘটনাক্রমে আমার মন্তব্যটিকে সম্পাদনা করার পরিবর্তে মুছে ফেলেছি, লিখিত সামগ্রীগুলি ছিল: "আপনি সত্য / মিথ্যা স্থলে delete delete মুছুন ব্যবহার করতে পারেন, ভাবুন (এবং কেবল কিছুই ফিরিয়ে দিতে পারবেন না"))
12

অই হ্যাঁ. আমি সেই নিয়মের দিকে তেমন মনোযোগ দিইনি।
আর্নল্ড

আপনি রাখতে পারেন case ... :বা default:শেষে (যেহেতু :কীওয়ার্ডগুলির মধ্যে অনুমোদিত নয়)
12

ও আপনি for(let _;0;);+2 শব্দের সাথে শেষ করতে পারেন (তবে আপনি caseআর ব্যবহার করতে পারবেন না )।
আরনাউল্ড

switch({}){case{}:{}}=> switch({}){case{}:;}? ;কখনও কখনও প্রয়োজনীয় কিনা তা জানেন না
l4m2

6

38 39

class await {}
class g extends await {
 constructor() {
  super()
 }
}
switch ({}) {
 case function(){
  for (let in public)
  do with(package){
   try{break}catch(private){
   if(typeof this)
    throw static instanceof new (class extends await {})
   else{continue}}finally{debugger}
  }while(void protected)
  var implements
  return 
  yield delete interface
  const a=0
 }:
}

"সুপার" থেকে "কনস্ট" শব্দ

গল্ফ সংস্করণ:

class e{}class g extends e{constructor(){super()}}switch({}){case
function(){for(let in public)do with(package)try{break}catch(private){if(typeof
this)throw static instanceof new(class extends await{})
else{continue}}finally{debugger}while(void protected)
var implements
return 
yield delete interface
const a=0}:}

এখন কি গল্ফ করার সময়?
l4m2

আমি Uncaught SyntaxError: Unexpected token deleteযখন গুগল ক্রোমে আমার জাভাস্ক্রিপ্ট কনসোলে আপনার উত্তরটি চালানোর চেষ্টা করব তখন আমি পাচ্ছি, আপনার সমাধানটি বৈধ কিনা আমি কীভাবে পরীক্ষা করতে পারি?
ফেরিবিগ

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

আমি এই ত্রুটিটি ফায়ারফক্সে SyntaxError: yield expression is only valid in generators
পেয়েছি

আমি 52.7.2 FF ব্যবহার
l4m2

4

21 শব্দ

(সম্পর্কে নিশ্চিত না letএবং await)

var await=String, let=String;
switch (await) {
    case void typeof new await instanceof let in (function()
{do{try{return this
if((class extends{}{})){}else{break}}finally{(delete {})}}while(false)})():break;
}

, =এবং ;বিভাজক হিসাবে অনুমোদিত নয়।
ব্যবহারকারী 202729

2
তাদের গণনা হচ্ছে না
soktinpk

3

43 শব্দ, 300 বাইট

with(this)try{let protected}catch(package){if(delete yield)for(const interface in typeof public)do{throw implements instanceof private}while(static)else debugger}finally{switch(void new class extends function(){return}{export(){var await}import(){break}super(){continue}enum(){}case(){}}){default:0}}

আরও পঠনযোগ্য:

with(this)
    try {
        let protected
    } catch(package){
        if(delete yield)
            for(const interface in typeof public)
                do {
                    throw implements instanceof private
                } while(static)
        else
            debugger
    } finally {
        switch(
          void new class extends function(){return} {
              export(){var await}
              import(){break}
              super(){continue}
              enum(){}
              case(){}
          }
        ){
            default:0
        }
    }

আমাকে মোকাবেলায় "পদ্ধতির নাম হিসাবে সংরক্ষিত শব্দ" ব্যবহার করতে হয়েছিল

  • case(যেহেতু আমি ইতিমধ্যে defaultআমার সাথে ব্যবহার করেছি swtich),
  • exportএবং import(যেহেতু মডিউল-মোড সর্বদা কঠোর, যা অযোগ্য ঘোষণা করে with)
  • super(যেহেতু এটি অবশ্যই কোনও সম্পত্তি অ্যাক্সেসের পরে অনুসরণ করা উচিত বা কোনও constructorকার্যক্রমে স্থাপন করা উচিত ) এবং
  • enum (যা ব্যাকরণগতভাবে-বৈধ ব্যবহারের সাথে কোনও সংরক্ষিত শব্দ হওয়ায় কখনও ব্যবহার করা যায় না)

আমার 39 সমাধান শো superনাম হিসাবে না নিয়ে শুরুতে উপস্থিত হতে পারে তবে খুব ব্যয়বহুল
l4m2

3

14 15 16 কোনও বন্ধনী বা নিউলাইন নয় এমন শব্দ

!function(){if(0);else do throw yield new public in void typeof this instanceof class await extends function async(){}{};while(0)}

+1 এর জন্য বার্গিকে ধন্যবাদ


আপনি কি এটিকে জেনারেটরের কাজ করতে পারেন এবং একটিতে ফেলে দিতে পারেন yield?
বার্গি

আমি এটি কি তা বুঝতে চেষ্টা করেছি, কিন্তু আমার মাথা ঘুরতে শুরু করেছে। আপনি একটি ব্যাখ্যা পোস্ট করতে পারেন?
ফিলিপ

আমি Uncaught SyntaxError: Unexpected token newযখন আমার জাভাস্ক্রিপ্ট
কনসোলটিতে

1
@Ferrybig, প্রতিস্থাপন functionসঙ্গে function*, তাই এটি একটি জেনারেটর হিসাবে স্বীকৃত করা হবে না।
অতিথি -১১৮

2

28 বন্ধনী ছাড়া শব্দ, 234 বাইট

পদ্ধতি সংজ্ঞা নাম হিসাবে সনাক্তকারী নাম রাখা খুব সুস্পষ্ট ছিল ( আমার পক্ষে কমপক্ষে ), তাই আমি কোড স্নিপেটে সংরক্ষিত শব্দ এবং সাদা স্থানের দীর্ঘতম ধারাবাহিক স্বতন্ত্র সিকোয়েন্সটি খুঁজছিলাম।

আমি আশা করি একটি কোডের পরে ডেড কোডটি returnএকটি লুফোল হিসাবে গণনা করা হয়নি, তবে ব্যবহৃত শনাক্তকারীদের ঘোষিত হলে কোডটি এখনও চালানো যায়।

function*_(){implements:{
let private
var public
return yield typeof static
delete protected
throw new interface in package
break implements
debugger
void this instanceof class await extends function async(){}{}
do
continue
while(0)}}

এটি ভবিষ্যতের সংরক্ষিত কীওয়ার্ডগুলির কেবলমাত্র ES5.1 এর কঠোর মোডে অকার্যকর বলে বিবেচিত হয়েছে (স্পষ্টতই কারণ ইঞ্জিনগুলি ES3 এর সমস্ত ভবিষ্যতের সংরক্ষিত শব্দগুলিকে ব্লক করতে বিরত করেনি তাই ওয়েবে তাদের ব্যবহার করার জন্য খুব বেশি কোড ছিল) )।

একইভাবে, asyncএবং awaitটোকেন ES8 চালু শুধুমাত্র কঠোর মোডে কীওয়ার্ড বিবেচনা করা হয়।


breakএবং continueসেখানে থাকতে পারে?
l4m2

আমি যখন ফাংশনটি কল করি, তখন আমি পাই Uncaught SyntaxError: Undefined label 'implements', আপনার উত্তরটির জন্য কোনও নির্দিষ্ট রানটাইম প্রয়োজন?
নিত

@ নিট ওফস, আমি আসলে এটি কল করি নি, কেবল এটির সিনট্যাক্টিকভাবে অনুমতি দেওয়া হয়েছে কিনা তা আমি পরীক্ষা করেছিলাম (এবং তারপরে অপ্টিমাইজড প্রসেসিসিজম: ডি)।
বার্গি

@ l4m2 ওহ, তুমি ঠিক আছে, তারা পারে না কিন্তু এটি একটি রানটাইম এরর তাই আমি নোটিশ :-( প্রয়োজন কাজ নির্বিচারে রেকর্ডকারী (এবং লেবেল সঙ্গে একটি ব্লক) একটি বিট হয়নি।
Bergi

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