কীভাবে এবং কেন জাভাস্ক্রিপ্টে 'a' ['toUpperCase'] () কাজ করে?


209

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

alert('a'['toUpperCase']());  //alerts 'A'

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

যাই হোক,

  • এই কাজটি কারণ toUpperCase'এ' এর সদস্য? নাকি পর্দার আড়ালে আরও কিছু চলছে?
  • আমি যে কোডটি পড়ছিলাম তার একটি ফাংশন রয়েছে:

    function callMethod(method) {
        return function (obj) {
            return obj[method](); //**how can I be sure method will always be a member of obj**
        }
    }
    
    var caps2 = map(['a', 'b', 'c'], callMethod('toUpperCase')); // ['A','B','C'] 
    // ignoring details of map() function which essentially calls methods on every 
    // element of the array and forms another array of result and returns it
    

    যে কোনও বস্তুর যেকোন পদ্ধতিতে কল করা এটি জেনারিক ফাংশন । তবে এর অর্থ কি নির্দিষ্ট পদ্ধতিটি ইতিমধ্যে নির্দিষ্ট বস্তুর অন্তর্নিহিত সদস্য হবে?

আমি নিশ্চিত যে আমি জাভাস্ক্রিপ্ট ফাংশনগুলির প্রাথমিক ধারণা সম্পর্কে কিছু গুরুতর বোঝা অনুপস্থিত। দয়া করে এটি বুঝতে আমাকে সহায়তা করুন।


24
কোনও বস্তুর বৈশিষ্ট্য অ্যাক্সেসের দুটি উপায় রয়েছে: ডট নোটেশন এবং ব্র্যাকেট স্বরলিপি। কিছুটা সম্পর্কিত: stackoverflow.com/a/11922384/218196 । আপনি ইতিমধ্যে কারণ আপনার সবসময় এটা ব্যবহার করলে অ্যারে উপাদানের অ্যাক্সেস বন্ধনী স্বরলিপি সম্পর্কে জানতে: arr[5]। কোথায় বৈধ আইডেন্টিফায়ার নাম যা আপনি ডট স্বরলিপি ব্যবহার করতে পারে সংখ্যার তাহলে arr.5
ফেলিক্স ক্লিং

2
এটা যেমন হয় 5['toString']()
0x499602D2

1
এছাড়াও সম্পর্কিত: স্ট্যাকওভারফ্লো . com / q / 4968406 / 218196
ফেলিক্স ক্লিং

সম্পর্কিত পড়া: 1) উত্তরাধিকার এবং প্রোটোটাইপ চেইন: বিকাশকারী.মোজিলা.আর.ইন.ইউএস / ডকস
থেরোট

21
প্রথমে পড়তে আমি ভেবেছিলাম শিরোনামটি "জাভাস্ক্রিপ্ট কীভাবে এবং কেন কাজ করে?" আহ ভালো.
সমস্যাযুক্ত

উত্তর:


293

এটি ভেঙে ফেলা।

  • .toUpperCase() একটি পদ্ধতি String.prototype
  • 'a'একটি আদিম মান, তবে এর অবজেক্টের উপস্থাপনায় রূপান্তরিত হয়
  • অবজেক্টের বৈশিষ্ট্য / পদ্ধতি, বিন্দু এবং বন্ধনী চিহ্নিতকরণ অ্যাক্সেস করার জন্য আমাদের দুটি সম্ভাব্য স্বরলিপি রয়েছে

সুতরাং

'a'['toUpperCase'];

সম্পত্তি থেকে বন্ধনী স্বাক্ষর মাধ্যমে অ্যাক্সেস toUpperCaseহয় String.prototype। যেহেতু এই সম্পত্তিটি কোনও পদ্ধতির উল্লেখ করে , তাই আমরা এটি সংযুক্ত করে আবেদন করতে পারি()

'a'['toUpperCase']();

এটি একটি হাস্যকর সাক্ষাত্কারের প্রশ্ন হবে
ফ্লফিবিং

78

foo.barএবং foo['bar']সমান তাই আপনার পোস্ট করা কোডটি একই

alert('a'.toUpperCase())

ব্যবহার করার সময় foo[bar](নোট থ্রি কোটের অভাব) আপনি আক্ষরিক নাম ব্যবহার করবেন না barতবে ভেরিয়েবলের barমধ্যে যা মান রয়েছে তা ব্যবহার করবেন না । সুতরাং foo[]পরিবর্তে স্বরলিপি ব্যবহার করে foo.আপনাকে একটি গতিশীল সম্পত্তি নাম ব্যবহার করতে দেয়।


আসুন একনজরে দেখে নেওয়া যাক callMethod:

প্রথমত, এটি এমন একটি ফাংশন দেয় যা objতার তর্ক হিসাবে গ্রহণ করে। যখন ফাংশনটি কার্যকর করা হয় তখন এটি methodসেই বস্তুটিতে কল করবে । সুতরাং প্রদত্ত পদ্ধতিটি কেবল objনিজের বা অন্য কোথাও এর প্রোটোটাইপ শৃঙ্খলে থাকা দরকার।

যদি toUpperCaseসেই পদ্ধতিটি আসে তবে String.prototype.toUpperCase- প্রতিটি স্ট্রিংয়ের বিদ্যমান পদ্ধতির আলাদা কপি থাকা মূর্খ হবে।


25

আপনি হয় .propertyNameস্বীকৃতি বা ["propertyName"]স্বরলিপি সহ যে কোনও বস্তুর সদস্যদের অ্যাক্সেস করতে পারেন । এটি জাভাস্ক্রিপ্ট ভাষার বৈশিষ্ট্য। সদস্যটি অবজেক্টে রয়েছে তা নিশ্চিত হওয়ার জন্য, এটি সংজ্ঞায়িত হয় কিনা তা খালি পরীক্ষা করে দেখুন:

function callMethod(method) {
    return function (obj) {
        if (typeof(obj[method]) == 'function') //in that case, check if it is a function
           return obj[method](); //and then invoke it
    }
}

17

মূলত জাভাস্ক্রিপ্ট সবকিছুকে একটি অবজেক্ট হিসাবে বিবেচনা করে, বা বরং প্রতিটি বস্তুকে অভিধান / সহযোগী-অ্যারে হিসাবে দেখা যায় as এবং কার্যকারিতা / পদ্ধতিগুলি বস্তুর জন্য ঠিক একইভাবে সংজ্ঞায়িত করা হয় - এই এসোসিয়েটিভ অ্যারেতে প্রবেশ হিসাবে।

অত্যাবশ্যকভাবে, আপনি উল্লেখ করছেন / কল করছেন (' ( ' ) ')' টু আপকারকেস 'সম্পত্তিটি,' এ 'অবজেক্টের (যা এই ক্ষেত্রে স্ট্রিং টাইপ,) উল্লেখ করুন।

এখানে আমার মাথার শীর্ষের কিছু কোড রয়েছে:

function myObject(){
    this.msg = "hey there! ;-)";
    this.woop = function(){
        alert(this.msg); //do whatever with member data
    }
}

var obj = new myObject();
alert( obj.msg );
alert( obj['msg'] );
obj['woop']();

10

anyObject['anyPropertyName']সমস্যাযুক্ত অক্ষর নেই anyObject.anyPropertyNameযখন হিসাবে একই anyPropertyName

MDN থেকে অবজেক্টের সাথে কাজ করা দেখুন ।

toUpperCaseপদ্ধতি টাইপ স্ট্রিং সংযুক্ত আছে। আপনি যখন কোনও আদিম মানতে কোনও ফাংশন কল করেন, এখানে 'a', এটি স্বয়ংক্রিয়ভাবে কোনও অবজেক্টে প্রচার করা হয়, এখানে একটি স্ট্রিং :

প্রাসঙ্গিক ক্ষেত্রে যেখানে কোনও পদ্ধতিটি আদিম স্ট্রিংয়ের সাথে যুক্ত করা যেতে পারে বা কোনও সম্পত্তি অনুসন্ধান দেখা যায়, জাভাস্ক্রিপ্ট স্বয়ংক্রিয়ভাবে স্ট্রিংটিকে আদিম लपेटবে এবং পদ্ধতিটি কল করবে বা সম্পত্তি অনুসন্ধান করবে।

আপনি লগ ইন করে ফাংশন বিদ্যমান দেখতে পারেন String.prototype.toUpperCase


9

জাভাস্ক্রিপ্ট সুতরাং, objectsহয় objects। এটাই তারা এই প্রকৃতির {}। অবজেক্ট বৈশিষ্ট্যগুলির মধ্যে এই দুটি ব্যবহার করে সেট করা যেতে পারে: a.greeting = 'hello';বা a['greeting'] = 'hello';। উভয় উপায় কাজ করে।

পুনরুদ্ধার একই কাজ করে। a.greeting(উদ্ধৃতি ব্যতীত) হয় 'hello', a['greeting']হয় 'hello'। ব্যতিক্রম: সম্পত্তিটি যদি একটি সংখ্যা হয় তবে কেবল বন্ধনী পদ্ধতি কাজ করে। বিন্দু পদ্ধতি না।

তাই 'a'সঙ্গে একটি বস্তুর 'toUpperCase'সম্পত্তি যা আসলে একটি ফাংশন। আপনি ফাংশনটি পুনরুদ্ধার করতে পারেন এবং পরবর্তী সময়ে যেকোন উপায়ে এটি কল করতে পারেন: 'a'.toUpperCase()বা 'a'['toUpperCase']()

তবে ইমোর মানচিত্রের ফাংশনটি লেখার আরও ভাল উপায়টি

var caps = ['a','b','c'].map( function(char) { return char.toUpperCase(); } )

হ'ল callMethodতখন কার কাজটির প্রয়োজন ?


সুন্দরভাবে ব্যাখ্যা করা হয়েছে :-)
এলিশা সেনু

6

প্রতিটি জাভাস্ক্রিপ্ট অবজেক্ট হ্যাশ টেবিল হয় সুতরাং আপনি কোনও কী নির্দিষ্ট করে এর সদস্যদের অ্যাক্সেস করতে পারবেন। উদাহরণস্বরূপ, যদি কোনও ভেরিয়েবল একটি স্ট্রিং হয়, তবে এটিতে টুআপারকেস ফাংশন থাকা উচিত। সুতরাং, আপনি এটি দ্বারা প্রার্থনা করতে পারে

var str = "a"
str['toUpperCase'](). // you get the method by its name as a key and invoke it.

সুতরাং, ইনলাইন টিআর দ্বারা, আপনি নীচে থাকতে পারে

"a"["toUpperCase"]()

6

টুঅপারকেস একটি স্ট্যান্ডার্ড জাভাস্ক্রিপ্ট পদ্ধতি: https://developer.mozilla.org/en-US/docs/ জাভা স্ক্রিপ্ট / রেফারেন্স / গ্লোবাল_অবজেক্টস / স্ট্রিং / টু আপার কেস

এটির মতো কাজ 'a'['toUpperCase']()করার কারণটি হ'ল টুঅপারকেস ফাংশন স্ট্রিং অবজেক্টের একটি বৈশিষ্ট্য 'a'। আপনি object[property]বা ব্যবহার করে কোনও বস্তুর বৈশিষ্ট্যগুলি উল্লেখ করতে পারেন object.property। সিনট্যাক্স 'a''toUpperCase' ইঙ্গিত দেয় আপনি 'a' স্ট্রিং অবজেক্টের 'টুআপারকেস' প্রম্পটটি উল্লেখ করছেন এবং তারপরে এটি কল করুন ()।


4

তবে এর অর্থ কি নির্দিষ্ট পদ্ধতিটি ইতিমধ্যে নির্দিষ্ট বস্তুর অন্তর্নিহিত সদস্য হবে?

না। যে কেউ একটি বস্তুর মধ্যে পাস করতে পারে

  1. নামে সম্পত্তি নেই toUpperCase; অথবা
  2. একটি সম্পত্তি আছে নামক toUpperCaseএকটি ফাংশন নয়

প্রথম ক্ষেত্রে, একটি ত্রুটি নিক্ষেপ করা হবে কারণ এমন কোনও সম্পত্তি অ্যাক্সেস করা যা রিটার্নের অস্তিত্ব নেই undefinedএবং আমরা undefinedকোনও ফাংশন হিসাবে প্রার্থনা করতে পারি না ।

দ্বিতীয় ক্ষেত্রে, একটি ত্রুটি নিক্ষেপ করা হবে কারণ আবার, আমরা একটি ফাংশন হিসাবে একটি অ-ফাংশন প্রার্থনা করতে পারি না।

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

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


4

জাভাস্ক্রিপ্টের প্রায় প্রতিটি জিনিসই একটি বিষয় হিসাবে বিবেচনা করা যেতে পারে। আপনার ক্ষেত্রে বর্ণমালা নিজেই একটি স্ট্রিং অবজেক্ট হিসাবে কাজ করে এবং toUpperCaseএর পদ্ধতি হিসাবে ডাকা যেতে পারে। বর্গাকার বন্ধনী বস্তুর বৈশিষ্ট্যাবলী অ্যাক্সেস করার মাত্র বিকল্প উপায় এবং যেহেতু toUpperCaseএকটি পদ্ধতি অত: পর simplebracket হয় ()পাশে প্রয়োজন হয় ['toUpperCase']বিরচন ['toUpperCase']()

'a'['toUpperCase']() সমতুল্য 'a'.toUpperCase()

'a'['toUpperCase']() // returns A
'a'.toUpperCase() // returns A

3

এখানে লক্ষণীয় গুরুত্বপূর্ণ বিষয়টি হ'ল, জাভাস্ক্রিপ্ট যেহেতু একটি গতিশীল ভাষা, তাই প্রতিটি বস্তু মূলত কেবল একটি গৌরবযুক্ত হ্যাশ-মানচিত্র ( কয়েকটি ব্যতিক্রম সহ )। এবং একটি জাভাস্ক্রিপ্ট অবজেক্টের প্রতিটি জিনিস দুটি উপায়ে অ্যাক্সেস করা যেতে পারে - বন্ধনীর চিহ্ন এবং ডট স্বরলিপি।

আপনার প্রশ্নের প্রথম অংশটির উত্তর দিয়ে আমি দুটি স্বরলিপিটি দ্রুত যাব এবং তারপরে আমি দ্বিতীয় অংশে যাব।

বন্ধনী স্বরলিপি

এই মোডটি অন্যান্য প্রোগ্রামিং ভাষাগুলিতে হ্যাশম্যাপ এবং অ্যারে অ্যাক্সেস করার অনুরূপ। আপনি এই সিনট্যাক্সটি ব্যবহার করে যে কোনও উপাদান (ডেটা (অন্যান্য সামগ্রী সহ) বা ফাংশন) অ্যাক্সেস করতে পারেন ।

এটি আপনার উদাহরণে ঠিক কী করছেন। আপনার কাছে 'a'যা (এবং একটি স্ট্রিং, না , একটি অক্ষর আক্ষরিক মত এটা যেমন সি ++ যেমন একটি ভাষা হতে হবে)।

বন্ধনী স্বরলিপি ব্যবহার করে, আপনি এর toUpperCaseপদ্ধতিটি অ্যাক্সেস করতে পারেন । তবে এটি অ্যাক্সেস এখনও যথেষ্ট নয়; alertউদাহরণস্বরূপ জাভাস্ক্রিপ্টে টাইপিং পদ্ধতিটিকে কল করে না। এটি কেবল একটি সাধারণ বিবৃতি ফাংশনটি কল করার জন্য, আপনাকে প্রথম বন্ধনী যুক্ত করতে হবে: এতে alert()একটি সাধারণ ডায়ালগ বক্স রয়েছে undefined, কারণ এটি কোনও পরামিতি পেয়েছে। আমরা এখন আপনার কোডটি বোঝার জন্য এই জ্ঞানটি ব্যবহার করতে পারি, যা হয়ে ওঠে:

alert('a'.toUpperCase());

যা অনেক বেশি পঠনযোগ্য।

প্রকৃতপক্ষে, এটি আরও খানিকটা ভাল বোঝার একটি ভাল উপায় হ'ল নিম্নলিখিত জাভাস্ক্রিপ্ট কার্যকর করা:

alert(alert)

এটি দ্বিতীয় সতর্কতা কার্যকর না করেও alertএটি একটি ফাংশন অবজেক্টকে পাস করার মাধ্যমে কল করে alert। যা দেখানো হয়েছে (ক্রোম 26 এ, কমপক্ষে) নীচে রয়েছে:

function alert() { [native code] } 

কল করা হচ্ছে:

alert(alert())

সমন্বিত দুটি বার্তা বার্তা প্রদর্শন করে undefined। এটি ব্যাখ্যা করা সহজ: অভ্যন্তরটি alert()প্রথমে কার্যকর হয়ে যায়, দেখায় undefined(কারণ এটির কোনও পরামিতি ছিল না) এবং কিছুই দেয় না। বাইরের সতর্কতা অভ্যন্তরীণ সতর্কতার রিটার্ন মান গ্রহণ করে - যা কিছুই নয়, এবং undefinedএকটি বার্তা বাক্সেও প্রদর্শন করে।

জেসফিডেলে সমস্ত মামলা চেষ্টা করে দেখুন!

ডট স্বরলিপি

এটিই আরও মানসম্পন্ন পদ্ধতির, যা কোনও বস্তুর সদস্যদের বিন্দু ( .) অপারেটর ব্যবহার করে অ্যাক্সেস করার অনুমতি দেয় । আপনার কোডটি বিন্দু স্বরলিপিতে দেখতে এমন দেখাচ্ছে:

alert('a'.toUpperCase())

আরও অনেক পাঠযোগ্য able সুতরাং কখন আমাদের বিন্দু চিহ্নিতকরণ ব্যবহার করা উচিত এবং কখন বন্ধনী স্বরলিপি ব্যবহার করা উচিত?

তুলনা

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

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

কিছু ক্ষেত্রে, ডট স্বরলিপি ব্যবহার করা আরও বুদ্ধিমান হলেও আপনার ব্র্যাকেট স্বরলিপি ব্যবহার করতে হবে :

  • যদি কোনও বস্তুর সদস্যের একটির এক বা একাধিক স্পেস বা অন্য কোনও বিশেষ অক্ষর যুক্ত একটি নাম থাকে, আপনি বিন্দু চিহ্নিতকরণ ব্যবহার করতে পারবেন না: foo.some method()কাজ করে না foo["some method"]();

  • যদি আপনাকে কোনও বস্তুর সদস্যদের গতিশীলভাবে অ্যাক্সেস করতে হয় তবে আপনি বন্ধনী স্বরলিপি ব্যবহার করে আটকেও গেছেন;

উদাহরণ:

for(var i = 0; i < 10; ++i) {
   foo["method" + i](); 
 }

নীচের লাইনটি হ'ল ম্যাপ ( foods["burger"].eat()) হিসাবে বস্তুটি ব্যবহার করার সময় এবং "প্রকৃত" ক্ষেত্র এবং পদ্ধতি ( enemy.kill()) এর সাথে কাজ করার সময় ডট সিনট্যাক্স ব্যবহার করার সময় আপনার বন্ধনী সিনট্যাক্স ব্যবহার করা উচিত । জাভাস্ক্রিপ্ট একটি গতিশীল ভাষা হওয়ার সাথে সাথে "প্রকৃত" ক্ষেত্র এবং কোনও অবজেক্টের পদ্ধতি এবং "অন্যান্য" ডেটার মধ্যে থাকা "ডেটা" র মধ্যে লাইনটি বেশ ঝাপসা হয়ে যেতে পারে। তবে যতক্ষণ আপনি এগুলিকে বিভ্রান্তিকর উপায়ে মিশ্রিত করবেন না ততক্ষণ আপনার ভাল হওয়া উচিত।


এখন, আপনার বাকী অংশে (অবশেষে!: পি)।

আমি কীভাবে নিশ্চিত হতে পারি যে পদ্ধতিটি সর্বদা অবজেক্টের সদস্য হতে পারে

আপনি পারবেন না। চেষ্টা করে দেখুন derpএকটি স্ট্রিং কল করার চেষ্টা করুন । আপনি এর লাইনে একটি ত্রুটি পাবেন:

Uncaught TypeError: Object a has no method 'derp' 

যে কোনও বস্তুর যেকোন পদ্ধতিতে কল করা এটি জেনারিক ফাংশন। তবে এর অর্থ কি নির্দিষ্ট পদ্ধতিটি ইতিমধ্যে নির্দিষ্ট বস্তুর অন্তর্নিহিত সদস্য হবে?

হ্যাঁ, আপনার ক্ষেত্রে এটি হতে হবে। অন্যথায় আপনি উপরে উল্লিখিত ত্রুটিটি শেষ করেন। যাইহোক, যদি আপনি না আছে ব্যবহার করতে return obj[method]();মধ্যে callMethod()ফাংশন। আপনি নিজের ক্রিয়াকলাপটি যুক্ত করতে পারেন যা মানচিত্রের ফাংশন দ্বারা ব্যবহৃত হবে used এখানে একটি হার্ড-কোডেড পদ্ধতি যা সমস্ত অক্ষরকে বড় হাতের অক্ষরে পরিণত করে:

function makeCap()
{
    return function(obj) {
        return obj.toUpperCase();
    }
}

var caps2 = map(['a', 'b', 'c'], makeCap()); // ['A','B','C'] 
console.log(caps2)

টিউটোরিয়ালের কোডটি আপনি সংযুক্ত করেছেন আংশিক ফাংশন । তারা নিজেরাই একটি কল্পিত ধারণা। এই বিষয়টি সম্পর্কে আরও পড়ার বিষয়গুলিকে আমি আর আগে তৈরির চেয়ে পরিষ্কার করে তুলতে সহায়তা করা উচিত।


দ্রষ্টব্য: এখানে প্রশ্নে উত্সটিতে কোড ব্যবহার করা মানচিত্রের ফাংশনের কোড ।

function map(arr, iterator) {
  var narr = [];
  for (var i = 0; i < arr.length; i++) narr.push(iterator(arr[i], i));
  return narr;
}

2

যদি আপনি জিজ্ঞাসা করেন যে এটি আসলে কীভাবে কাজ করে যা আমি এটি পড়ি। ঠিক আছে এটি একটি সাধারণ গাণিতিক ফাংশন। এটি বুঝতে আপনার আসকি টেবিলটি দেখতে হবে। যা প্রতিটি বর্ণের একটি সংখ্যাসূচক মান নির্ধারণ করে। এটিকে গোপন করার জন্য প্রতিযোগিতাটি প্রচ্ছন্ন করার জন্য কেবল একটি যুক্তিযুক্ত বিবৃতি ব্যবহার করে উদাহরণস্বরূপ যদি (ChcrValue> 80 && CharValue <106) // এটি ছোট মামলার অক্ষরের সেট হয় তবে CharValue = charValue - 38; // নিম্ন সেট এবং উপরের সেটের মধ্যে দূরত্ব

এটি এত সহজ, আমি আসলে সঠিক মানগুলি দেখার চেষ্টা করি নি তবে মূলত ছোট হাতের অক্ষরগুলি বড় হাতের অক্ষরে স্থানান্তরিত করা হয়।


এটি প্রশ্নের সাথে কীভাবে সম্পর্কিত?
কোয়াশডঙ্ক

2
@ জিএলএইচ, তিনি জিজ্ঞাসা করলেন কীভাবে এবং কেন 'a'['toUpperCase']()কাজ করে। তবে ভুল বোঝাবুঝি বোধগম্য, যদি কেউ প্রশ্নটি না পড়েন।
LarsH

gr8 উত্তর, যেহেতু কোনও শৈলী text-transform: uppercaseযুক্ত করা হয়নি, জেএস কীভাবে মামলাটি পরিবর্তন করতে পেরেছিল, সন্দেহকে সাফ করেছে এবং একটি বা দুটি জিনিস শিখেছে তা সম্পর্কে আমি বিস্মিত হয়েছিলাম। অনেক ধন্যবাদ.
dkjain
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.