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


237

জাভাস্ক্রিপ্ট কি অপরিবর্তনীয় বা পরিবর্তনীয় স্ট্রিং ব্যবহার করে? আমার কি "স্ট্রিং বিল্ডার" দরকার?


3
হ্যাঁ, y অপরিবর্তনীয় এবং আপনার কোনও ধরণের "স্ট্রিং বিল্ডার" দরকার। এই ব্লগ.কোডেফেক্টস / আর্টিক্যাল
স্ট্রিং-

2
আকর্ষণীয়, এই উদাহরণগুলি আমার উত্তরে আমার অনুসন্ধানগুলির সাথে বিরোধিতা করে।
হুয়ান মেন্ডেস

উত্তর:


294

এগুলি অপরিবর্তনীয়। আপনি স্ট্রিংয়ের মধ্যে এমন কিছু দিয়ে একটি চরিত্র পরিবর্তন করতে পারবেন না var myString = "abbdef"; myString[2] = 'c'। যেমন স্ট্রিং ম্যানিপুলেশন পদ্ধতি trim, sliceনতুন স্ট্রিং ফিরে যান।

একইভাবে, যদি আপনার একই স্ট্রিংয়ের দুটি উল্লেখ থাকে তবে একটি পরিবর্তন করে অন্যটির উপর প্রভাব ফেলবে না

let a = b = "hello";
a = a + " world";
// b is not affected

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

এটিই আমি বিশ্বাস করি যে এটি দ্রুততম পথ হবে, যদিও আমি ভেবেছিলাম যে কোনও মেথড কল যুক্ত করা এটি ধীর করে দেবে ...

function StringBuilder() {
    this._array = [];
    this._index = 0;
}

StringBuilder.prototype.append = function (str) {
    this._array[this._index] = str;
    this._index++;
}

StringBuilder.prototype.toString = function () {
    return this._array.join('');
}

এখানে পারফরম্যান্স স্পিড টেস্ট রয়েছে। এঁরা তিনজনই "Hello diggity dog"এক লক্ষ হাজার বার একটি খালি স্ট্রিংয়ে যুক্ত করে তৈরি একটি বিশাল স্ট্রিং তৈরি করেন ।

আমি তিন ধরণের পরীক্ষা তৈরি করেছি

  • ব্যবহার Array.pushএবংArray.join
  • অ্যারে সূচি ব্যবহার এড়াতে Array.push, তারপরে ব্যবহার করাArray.join
  • স্ট্রেইট স্ট্রিং কনকনেটেশন

তখন আমি তাদের মধ্যে সংক্ষেপ একই তিনটি টেস্ট নির্মিত StringBuilderConcat, StringBuilderArrayPushএবং StringBuilderArrayIndex http://jsperf.com/string-concat-without-sringbuilder/5 দয়া করে সেখানে যেতে এবং চালানোর পরীক্ষা তাই আমরা একটা চমৎকার নমুনা পেতে পারেন। মনে রাখবেন যে আমি একটি ছোট ত্রুটি সংশোধন করেছি, সুতরাং পরীক্ষাগুলির ডেটা মুছে গেল, পর্যাপ্ত পারফরম্যান্সের ডেটা উপস্থিত হলে আমি টেবিলটি আপডেট করব। পুরানো ডেটা টেবিলের জন্য http://jsperf.com/string-concat-without-sringbuilder/5 এ যান ।

আপনি লিঙ্কটি অনুসরণ করতে না চাইলে এখানে কয়েকটি সংখ্যা (সর্বশেষ হালনাগাদ Ma5rch 2018) are প্রতিটি পরীক্ষার সংখ্যা 1000 অপারেশন / সেকেন্ডে হয় ( বেশি ভাল হয় )

| Browser          | Index | Push | Concat | SBIndex | SBPush | SBConcat |
---------------------------------------------------------------------------
| Chrome 71.0.3578 | 988   | 1006 | 2902   | 963     | 1008   | 2902     |
| Firefox 65       | 1979  | 1902 | 2197   | 1917    | 1873   | 1953     |
| Edge             | 593   | 373  | 952    | 361     | 415    | 444      |
| Exploder 11      | 655   | 532  | 761    | 537     | 567    | 387      |
| Opera 58.0.3135  | 1135  | 1200 | 4357   | 1137    | 1188   | 4294     | 

ফলাফল

  • আজকাল, সমস্ত চিরসবুজ ব্রাউজারগুলি স্ট্রিং কনক্যাটেনশন ভালভাবে পরিচালনা করে। Array.joinশুধুমাত্র আইই 11 সাহায্য করে

  • সামগ্রিকভাবে, অপেরা দ্রুততম, অ্যারে.জোঁইনের চেয়ে 4 গুণ দ্রুত

  • ফায়ারফক্স দ্বিতীয় এবং Array.joinএফএফ-তে সামান্য ধীর তবে ক্রোমে যথেষ্ট ধীর (3x)।

  • ক্রোম তৃতীয় তবে স্ট্রিং কনক্যাটটি অ্যারে.জয়িনের চেয়ে 3 গুণ বেশি দ্রুত

  • স্ট্রিংবিল্ডার তৈরি করা পারফোমেন্সকে খুব বেশি প্রভাবিত করে না বলে মনে হচ্ছে।

আশা করি অন্য কেউ এটি দরকারী বলে মনে করেন

বিভিন্ন পরীক্ষার কেস

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

আমি পরামর্শ দিচ্ছি যে প্রত্যেককে এটি পরীক্ষা করার অন্যান্য উপায় নিয়ে ভাবতে হবে এবং নীচে বিভিন্ন পরীক্ষার ক্ষেত্রে নতুন লিঙ্ক যুক্ত করতে নির্দ্বিধায় কাজ করা উচিত।

http://jsperf.com/string-concat-without-sringbuilder/7


@ জুয়ান, আপনি যে লিঙ্কটি আমাদের দেখতে যেতে চেয়েছিলেন তা 30 বার 112-চর স্ট্রিংটিকে সম্মতি জানায়। এখানে আরও একটি পরীক্ষা যা জিনিসগুলিতে ভারসাম্য বজায় রাখতে সহায়তা করে - অ্যারে.জোঁ বনাম স্ট্রিং কনকনটেশন 20,000 বিভিন্ন 1-চর স্ট্রিংগুলিতে (আইই / এফএফ-তে যোগ দিন খুব দ্রুত)। jsperf.com/join-vs-str-concat-large-array
রায় টিঙ্কার

1
@ রয়টাইঙ্কার রায়, ওহ রায়, আপনার পরীক্ষাগুলি প্রতারণা করছে কারণ আপনি পরীক্ষার সেটআপে অ্যারে তৈরি করছেন। এখানে বিভিন্ন অক্ষর ব্যবহার করে বাস্তব পরীক্ষা jsperf.com/string-concat-without-sringbuilder/7 নির্দ্বিধায় নতুন পরীক্ষার বিষয় তৈরি করতে, কিন্তু অ্যারের তৈরি পরীক্ষা নিজেই অংশ
জুয়ান মেন্ডেস

@ জুয়ানমেন্ডেস আমার লক্ষ্য ছিল পরীক্ষার কেসকে joinবনাম স্ট্রিং কনটেনটেশনের সাথে কড়া তুলনা করা , সুতরাং পরীক্ষার আগে অ্যারে তৈরি করা। আমি মনে করি না যে এই প্রতারণাটি যদি সেই লক্ষ্যটি বোঝা যায় তবে (এবং joinঅভ্যন্তরীণভাবে অ্যারেটি গণনা করা হয়, সুতরাং এটি পরীক্ষা forথেকে কোনও লুপ বাদ দিতে প্রতারণা করে না join)।
রায় টিঙ্কার

2
@ রয়টাইঙ্কার হ্যাঁ এটি হ'ল, যে কোনও স্ট্রিং বিল্ডারের জন্য অ্যারে তৈরি করা প্রয়োজন। স্ট্রিং নির্মাতার প্রয়োজন কিনা তা নিয়ে প্রশ্ন। আপনার যদি ইতিমধ্যে কোনও অ্যারেতে স্ট্রিং থাকে, তবে আমরা এখানে যা আলোচনা করছি তার জন্য এটি বৈধ পরীক্ষার কেস নয়
জুয়ান মেন্ডেস

1
@ বালতুসাজ সূচক / পুশ বলে যে কলামগুলি ব্যবহার করছেArray.join
হুয়ান মেন্ডিস

41

থেকে গণ্ডার বই :

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


7
গণ্ডার বইয়ের উপযুক্ত বিভাগে লিঙ্ক করুন: books.google.com/…
বাডট্যাক

116
রাইনো বইয়ের উদ্ধৃতি (এবং এই উত্তরটি) এখানে ভুল । জাভাস্ক্রিপ্টে স্ট্রিং আদিম মান ধরনের হয় এবং না বস্তু (বৈশিষ্ট) । বস্তুত, ES5 থেকে এদের পাশাপাশি মাত্র 5 মান ধরনের মধ্যে একজন হন null undefined numberএবং boolean। Strings দ্বারা নির্ধারিত হয় মান এবং না রেফারেন্স দ্বারা এবং যেমন পাঠানো হয়। সুতরাং, স্ট্রিংগুলি কেবল অপরিবর্তনীয় নয়, তারা একটি মান । স্ট্রিং পরিবর্তন "hello"হতে "world"সিদ্ধান্ত এখন থেকে যে 3 নম্বর মত হলে সংখ্যা 4 ... এটা কোন অর্থে তোলে।
বেনজামিন গ্রুয়েনবুম

8
হ্যাঁ, আমার মন্তব্যের মতোই স্ট্রিংগুলি পরিবর্তনযোগ্য , তবে সেগুলি রেফারেন্সের ধরণের নয় এবং সেগুলি বস্তু নয় - এগুলি আদিম মানের ধরণের value তারা না হয় দেখার একটি সহজ উপায় var a = "hello";var b=a;a.x=5;console.log(a.x,b.x);
হ'ল

9
@ VidarS.Ramdal না, Stringস্ট্রিং কন্সট্রাকটর ব্যবহার করে তৈরি করা বস্তু চাদরে প্রায় জাভাস্ক্রিপ্ট স্ট্রিং মান। আপনি .valueOf()ফাংশনটি ব্যবহার করে বাক্সযুক্ত ধরণের স্ট্রিং মান অ্যাক্সেস করতে পারেন - এটি Numberবস্তু এবং সংখ্যা মানগুলির ক্ষেত্রেও সত্য । এটি লক্ষ্য করা গুরুত্বপূর্ণ যে Stringব্যবহার করে তৈরি করা বস্তুগুলি new Stringপ্রকৃত স্ট্রিং নয় তবে স্ট্রিংগুলির চারপাশে মোড়ক বা বাক্সEs5.github.io/#x15.5.2.1 দেখুন । আমাদের সম্পর্কে কিভাবে যে বস্তু রূপান্তর দেখতে es5.github.io/#x9.9
বেঞ্জামিন Gruenbaum

5
কিছু লোক কেন স্ট্রিংকে অবজেক্ট বলে বলে, সম্ভবত এটি পাইথন বা লিস্প বা অন্য কোনও ভাষা থেকে এসেছে যেখানে এর স্পেসটি "অবজেক্ট" শব্দটি কোনও ধরণের ডেটাম (এমনকি পূর্ণসংখ্যার) অর্থ ব্যবহার করে। তাদের কেবল ইসিএমএ স্পেস শব্দটি কীভাবে সংজ্ঞায়িত করে তা পড়তে হবে: "অবজেক্ট টাইপের সদস্য"। এছাড়াও, এমনকি "মান" শব্দটির অর্থ বিভিন্ন ভাষার স্পেক অনুযায়ী বিভিন্ন জিনিস হতে পারে mean
জিসং ইয়ু

21

পারফরম্যান্স টিপ:

আপনার যদি বড় স্ট্রিংগুলি সংহত করতে হয় তবে স্ট্রিং অংশগুলিকে একটি অ্যারেতে রাখুন এবং Array.Join()সামগ্রিক স্ট্রিংটি পেতে পদ্ধতিটি ব্যবহার করুন । এটি বৃহত সংখ্যক স্ট্রিং সংমিশ্রনের জন্য বহুগুণ দ্রুত হতে পারে।

সেখানে নেই StringBuilderজাভাস্ক্রিপ্ট হবে।


আমি জানি যে স্ট্রিংবিল্ডার নেই, এমএসএজ্যাক্স একটি রয়েছে এবং আমি কেবল এটির দরকারী কিনা তা নিয়ে ভাবছিলাম
ডেভেলপিংক্রিস

5
এটি স্ট্রিংগুলি অপরিবর্তনীয় বা না হওয়ার সাথে কী করতে পারে?
বাডটাক

4
@ ডকনোম: যেহেতু স্ট্রিং অপরিবর্তনীয়, স্ট্রিং কনটেনটেশনের জন্য অ্যারে.জয়েনের পদ্ধতির চেয়ে বেশি অবজেক্ট তৈরি করা দরকার
জুয়ান মেন্ডেস

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

9
আপনার উত্তর আপডেট করার কথা বিবেচনা করুন, এটি অনেক আগে সত্য হতে পারে তবে এটি আর নেই। Jsperf.com/string-concat-without-sringbuilder/5
জুয়ান মেন্ডেস

8

আমার মতো সাধারণ মনের পক্ষে ( এমডিএন থেকে ) কেবল স্পষ্ট করার জন্য :

অপরিবর্তনীয় হ'ল সেই বস্তু যা একবার রাষ্ট্র তৈরি হয়ে গেলে তার অবস্থার পরিবর্তন করা যায় না।

স্ট্রিং এবং নম্বরগুলি অপরিবর্তনীয়।

অপরিবর্তনীয় মানে:

আপনি একটি ভ্যারিয়েবল নামের পয়েন্টটি একটি নতুন মানের করতে পারেন, তবে আগের মানটি এখনও মেমোরিতে রাখা আছে। তাই আবর্জনা সংগ্রহের প্রয়োজন need

var immutableString = "Hello";

// উপরের কোডে স্ট্রিংয়ের মান সহ একটি নতুন অবজেক্ট তৈরি করা হয়েছে।

immutableString = immutableString + "World";

// আমরা এখন বিদ্যমান মানের সাথে "ওয়ার্ল্ড" যুক্ত করছি।

দেখে মনে হচ্ছে আমরা 'অপরিবর্তনীয় স্ট্রিং' স্ট্রিংটি পরিবর্তন করছি তবে আমরা তা করি না। পরিবর্তে:

স্ট্রিং মান সহ "অপরিবর্তনীয় স্ট্রিং" যুক্ত করার সময়, নিম্নলিখিত ইভেন্টগুলি ঘটে:

  1. "অপরিবর্তনীয় স্ট্রিং" এর বিদ্যমান মান পুনরুদ্ধার করা হয়েছে
  2. "অপরিবর্তনীয় স্ট্রিং" এর বিদ্যমান মানটিতে "ওয়ার্ল্ড" যুক্ত করা হয়েছে
  3. ফলস্বরূপ মানটি মেমরির নতুন ব্লকে বরাদ্দ করা হয়
  4. "অপরিবর্তনীয় স্ট্রিং" অবজেক্টটি এখন নতুন নির্মিত মেমরি স্পেসকে নির্দেশ করে
  5. পূর্বে তৈরি মেমরির স্থান এখন আবর্জনা সংগ্রহের জন্য উপলব্ধ।

4

স্ট্রিং টাইপ মান পরিবর্তনযোগ্য, কিন্তু স্ট্রিং অবজেক্ট, যা স্ট্রিং () কনস্ট্রাক্টর ব্যবহার করে তৈরি করা হয়েছে তা পরিবর্তনযোগ্য, কারণ এটি একটি বস্তু এবং আপনি এতে নতুন বৈশিষ্ট্য যুক্ত করতে পারেন।

> var str = new String("test")
undefined
> str
[String: 'test']
> str.newProp = "some value"
'some value'
> str
{ [String: 'test'] newProp: 'some value' }

এদিকে, আপনি নতুন বৈশিষ্ট্য যুক্ত করতে পারলেও ইতিমধ্যে বিদ্যমান বৈশিষ্ট্যগুলি পরিবর্তন করতে পারবেন না

ক্রোম কনসোলে একটি পরীক্ষার স্ক্রিনশট

উপসংহারে, 1. সমস্ত স্ট্রিং ধরণের মান (আদিম ধরণের) অপরিবর্তনীয়। ২. স্ট্রিং অবজেক্টটি পরিবর্তনীয়, তবে এতে থাকা স্ট্রিং টাইপ মান (আদিম ধরণ) অপরিবর্তনীয়।


জাভাস্ক্রিপ্টের স্ট্রিং অবজেক্টগুলি
হ'ল

@ প্রসুন তবে সেই পৃষ্ঠায় এটি বলে: "অবজেক্টস ব্যতীত সকল প্রকারের অবিচ্ছেদ্য মানগুলি সংজ্ঞা দেয় (মানগুলি, যা পরিবর্তিত হতে অক্ষম হয়)" স্ট্রিং অবজেক্টগুলি অবজেক্ট are আপনি যদি এতে নতুন নতুন সম্পত্তি যুক্ত করতে পারেন তবে কীভাবে তা অপরিবর্তনীয়?
zhanziyang

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

6
new Stringঅপরিবর্তনীয় স্ট্রিংয়ের চারপাশে একটি পরিবর্তনীয় মোড়ক তৈরি করে
tomdemuyt

1
উপরে @ zhanziyang এর কোড চালিয়ে পরীক্ষা করা খুব সহজ। আপনি Stringকোনও সামগ্রীতে সম্পূর্ণ নতুন বৈশিষ্ট্য যুক্ত করতে পারেন (মোড়ক), এটি স্থাবর নয় (পূর্বনির্ধারিত; অন্য অবজেক্টের মতো আপনি Object.freezeএকে অপরিবর্তনীয় রেন্ডার করতে কল করতে পারেন )। তবে একটি আদিম স্ট্রিং মান ধরণ, কোনও Stringঅবজেক্ট র‌্যাপারে অন্তর্ভুক্ত থাকুক বা না থাকুক না কেন, সর্বদা অস্থির।
মার্ক রিড

3

স্ট্রিংগুলি পরিবর্তনযোগ্য - তারা পরিবর্তন করতে পারে না, আমরা কেবল কখনও নতুন স্ট্রিং তৈরি করতে পারি।

উদাহরণ:

var str= "Immutable value"; // it is immutable

var other= statement.slice(2, 10); // new string

1

এএসপি.নেট এজাক্সের স্ট্রিংবিল্ডার সম্পর্কে আপনার প্রশ্নের বিষয়ে (অ্যাশের প্রতিক্রিয়াতে আপনার মন্তব্যে) বিশেষজ্ঞরা এ সম্পর্কে একমত নন বলে মনে করছেন।

ক্রিশ্চিয়ান ওয়েঞ্জ তার বই প্রোগ্রামিং এএসপি.নেট আজাক্স (ও'রেলি) বইয়ে বলেছেন যে "এই পদ্ধতির স্মৃতিতে কোনও পরিমাপযোগ্য প্রভাব নেই (বাস্তবে, বাস্তবায়নটি স্ট্যান্ডার্ড পদ্ধতির চেয়ে টিক ধীর বলে মনে হয়)।"

অন্যদিকে গ্যালো এট তাদের এএসপি.নেট এজ্যাক্স ইন অ্যাকশন বইয়ে বলেছেন (ম্যানিং) এ বলেছেন যে "যখন স্ট্রিং বিল্ডার সংক্ষিপ্তকরণের স্ট্রিংয়ের সংখ্যা বেশি হয়, স্ট্রিং বিল্ডার বিশাল কর্মক্ষমতা হ্রাস এড়ানোর জন্য একটি অপরিহার্য বস্তুতে পরিণত হয়।"

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


1

এটি একটি দেরী পোস্ট, তবে আমি উত্তরের মধ্যে একটি ভাল বইয়ের উদ্ধৃতি পাই না।

একটি নির্ভরযোগ্য বই ব্যতীত এখানে একটি নির্দিষ্ট:

স্ট্রিংগুলি ইসমাস্ক্রিপ্টে অপরিবর্তনীয়, এর অর্থ এটি তৈরি হয়ে গেলে তাদের মানগুলি পরিবর্তন করতে পারে না। কোনও ভেরিয়েবল দ্বারা আটকানো স্ট্রিংটি পরিবর্তন করতে, মূল স্ট্রিংটি অবশ্যই ধ্বংস করতে হবে এবং ভেরিয়েবলটি নতুন মান সহ অন্য স্ট্রিংতে ভরা উচিত ... Web ওয়েব বিকাশকারীদের জন্য পেশাদার জাভাস্ক্রিপ্ট, তৃতীয় এড।, পি .৪3

এখন, গণ্ডার বইয়ের উদ্ধৃতিটি যে উত্তরটি উদ্ধৃত করেছে তা স্ট্রিং অপরিবর্তনীয়তা সম্পর্কে সঠিক তবে "স্ট্রিংসকে মূল্য দিয়ে নয়, রেফারেন্স দ্বারা বরাদ্দ করা হয়েছে।" (সম্ভবত এগুলি শব্দটির বিপরীত উপায়ে বোঝাতে চেয়েছিল)।

"প্রফেশনাল জাভাস্ক্রিপ্ট", "আদিম এবং রেফারেন্স মানগুলি" নামে অধ্যায়টিতে "রেফারেন্স / মান" ভুল ধারণাটি স্পষ্ট করা হয়েছে:

পাঁচটি আদিম ধরণের ... [হ'ল: অপরিজ্ঞাত, নাল, বুলিয়ান, সংখ্যা এবং স্ট্রিং। এই ভেরিয়েবলগুলি মান দ্বারা অ্যাক্সেস করা হয় বলা হয়, কারণ আপনি ভেরিয়েবলে সঞ্চিত প্রকৃত মানটি হেরফের করছেন। Web ওয়েব বিকাশকারীদের জন্য পেশাদার জাভাস্ক্রিপ্ট, তৃতীয় সংস্করণ, পি .85

এটি বস্তুর বিরোধী :

আপনি যখন কোনও বস্তু পরিচালনা করেন, আপনি সত্যিকারের বস্তুর পরিবর্তে object অবজেক্টের কোনও রেফারেন্সে কাজ করছেন working এই কারণে, এই জাতীয় মানগুলি রেফারেন্সের মাধ্যমে অ্যাক্সেস করা হবে বলে জানা যায়। Web ওয়েব বিকাশকারীদের জন্য পেশাদার জাভাস্ক্রিপ্ট, তৃতীয় সংস্করণ, পি .85


এফডব্লিউআইডাব্লু: রাইনো বইটির সম্ভবত সম্ভবত অভ্যন্তরীণভাবে / প্রয়োগকরণ একটি স্ট্রিং অ্যাসাইনমেন্ট একটি পয়েন্টারটি স্ট্রিং / অনুলিপি করছে (স্ট্রিংয়ের বিষয়বস্তু অনুলিপি করার চেয়ে)। এটি পরবর্তী অংশের উপর নির্ভর করে এটি তাদের দুর্ঘটনার মতো দেখাচ্ছে না look তবে আমি একমত: তারা "রেফারেন্স দ্বারা" শব্দটি অপব্যবহার করে। এটি "রেফারেন্স দ্বারা" নয় কারণ বাস্তবায়ন পয়েন্টারগুলি (পারফরম্যান্সের জন্য) পাস করে। উইকি - মূল্যায়নের কৌশলটি এই বিষয়টিতে একটি আকর্ষণীয় পঠন।
টুলমেকারস্টেভ

-1

জাভাস্ক্রিপ্ট স্ট্রিং প্রকৃতপক্ষে পরিবর্তনযোগ্য।


ডক লিঙ্ক? আমি এটিতে কোনও নির্দিষ্টকরণ খুঁজে পাই না can't
বিকাশক্রিস

1
"একটি স্বতন্ত্র চরিত্র নির্ধারণের প্রচেষ্টা কাজ করবে না" - বিকাশকারী.মোজিলা.আর.ইন
কেন ২

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