javascript - অবজ - জাভাস্ক্রিপ্ট বই




জাভাস্ক্রিপ্ট গতিশীল পরিবর্তনশীল নাম ব্যবহার করুন (8)

2019

টি এল; ডিআর

  • eval অপারেটর স্ট্রিং অভিব্যক্তি চালাতে পারে এটি বলা প্রসঙ্গে এবং মান ফেরত, ভেরিয়েবল;
  • literal object তাত্ত্বিকভাবে যে {[varName]} , কিন্তু এটি সংজ্ঞা দ্বারা অবরুদ্ধ।

তাই আমি এই প্রশ্ন জুড়ে এসেছি এবং এখানে সবাই শুধু আসল সমাধান আনয়ন না করেই ঘুরে বেড়ায়। ধন্যবাদ এক্সেল হেডার, যিনি আসছেন।

সঠিক সমাধান eval

প্রায় সবচেয়ে ভুলে যাওয়া ভাষা অপারেটর। (আমি মনে করি সর্বাধিক এক with )

তাই রিজার্ভ শব্দ অপারেটর eval গতিশীলভাবে বলা প্রসঙ্গে অভিব্যক্তি চালাতে পারেন। এবং যে অভিব্যক্তি ফলাফল ফিরে। আমরা গতিশীলভাবে একটি ফাংশন প্রেক্ষাপটে একটি পরিবর্তনশীল একটি মান ফেরত দিতে ব্যবহার করতে পারেন।

উদাহরণ:

function exmaple1(){
   var a = 1, b = 2, default = 3;
   var name = 'a';
   return eval(name)
}

example1() // return 1


function example2(option){
  var a = 1, b = 2, defaultValue = 3;

  switch(option){
    case 'a': name = 'a'; break;
    case 'b': name = 'b'; break;
    default: name = 'defaultValue';
  }
  return eval (name);
}

example2('a') // return 1
example2('b') // return 2
example2() // return 3

উল্লেখ্য যে আমি সবসময় স্পষ্টভাবে স্পষ্টভাবে লিখি অভিব্যক্তি চালানো হবে। কোড অপ্রয়োজনীয় চমত্কার এড়ানোর জন্য। eval খুব শক্তিশালী কিন্তু আমি নিশ্চিত যে আপনি ইতিমধ্যে জানেন

বিটিডব্লিউ, যদি এটি বৈধ হয় তবে আমরা পরিবর্তনশীল নাম এবং মূল্য ক্যাপচার করতে literal object ব্যবহার করতে পারি, কিন্তু আমরা গণিত সম্পত্তি নাম এবং সম্পত্তি মূল্য শর্টন্ডকে একত্রিত করতে পারি না, দুঃখিতভাবে, অবৈধ

functopn example( varName ){
    var var1 = 'foo', var2 ='bar'

    var capture = {[varName]}

}

example('var1') //trow 'Uncaught SyntaxError: Unexpected token }`

পিএইচপি আপনি এই মত আশ্চর্যজনক / ভয়ঙ্কর জিনিস করতে পারেন:

$a = 1;
$b = 2;
$c = 3;
$name = 'a';
echo $$name;
// prints 1

জাভাস্ক্রিপ্ট দিয়ে এমন কিছু করার উপায় আছে কি?

যেমন যদি আমার একটি var name = 'the name of the variable'; আমি নাম name সঙ্গে পরিবর্তনশীল একটি রেফারেন্স পেতে পারি?


eval () আমার পরীক্ষা কাজ করে না। কিন্তু DOM ট্রিতে নতুন জাভাস্ক্রিপ্ট কোড যোগ করা সম্ভব। সুতরাং এখানে একটি ফাংশন যা একটি নতুন পরিবর্তনশীল যোগ করে:

function createVariable(varName,varContent)
{
  var scriptStr = "var "+varName+"= \""+varContent+"\""

  var node_scriptCode = document.createTextNode( scriptStr )
  var node_script = document.createElement("script");
  node_script.type = "text/javascript"
  node_script.appendChild(node_scriptCode);

  var node_head = document.getElementsByTagName("head")[0]
  node_head.appendChild(node_script);
}

createVariable("dynamicVar", "some content")
console.log(dynamicVar)

আপনি যদি গ্লোবাল অবজেক্টটি উইন্ডো বা গ্লোবাল (নোড) ব্যবহার করতে না চান তবে আপনি এটির মতো কিছু চেষ্টা করতে পারেন:

var obj = {};
obj['whatever'] = 'There\'s no need to store even more stuff in a global object.';

console.log(obj['whatever']);

আমি ফ্লাইডাটাতে একাধিক ফরমডাটা আঁকতে এবং বস্তুর সাথে ভালভাবে কাজ করতে হয়েছিল

var forms = {}

তারপর আমার loops মধ্যে আমি ব্যবহৃত একটি ফর্ম তথ্য তৈরি করতে প্রয়োজন

forms["formdata"+counter]=new FormData();
forms["formdata"+counter].append(var_name, var_value);

জাভাস্ক্রিপ্টে আপনি সমস্ত বৈশিষ্ট্য মূল মান জোড়া যুক্ত করতে পারেন। jAndy ইতিমধ্যে এই উল্লেখ করা কিন্তু আমি তার উত্তর শো কিভাবে এটা শোষিত করা যাবে না মনে হয় না।

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

var id = "abc";
var mine = {};
mine[id] = 123;
console.log(mine.abc);

123 প্রদান করে। সাধারণত আপনি ভেরিয়েবলটি তৈরি করতে চান যার ফলে নিদর্শন রয়েছে তাই আপনি এটি অন্য দিকেও করতে পারেন।

var mine = {};
mine.abc = 123;
console.log(mine["a"+"bc"]);

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

function create(obj, const){
// where obj is an object and const is a variable name
function const () {}

const.prototype.myProperty = property_value;
// .. more prototype

return new const();

}

ইসিএমএসস্ক্রিপ্ট 5 এ প্রয়োগ করা ঠিক মত একটি তৈরি ফাংশন হচ্ছে।


শুধু একটি খারাপ উত্তর এত ভোট পায় কি না জানি না। এটা বেশ সহজ উত্তর কিন্তু আপনি এটি জটিল করা।

// If you want to get article_count
// var article_count = 1000;
var type = 'article';
this[type+'_count'] = 1000;  // in a function we use "this";
alert(article_count);

eval এক বিকল্প।

var a = 1;
var name = 'a';

document.write(eval(name)); // 1







dynamic-variables