ব্যাকটিক্স একটি ফাংশন কল


93

আমি কীভাবে এটি ব্যাখ্যা করব তা নিশ্চিত নই, তবে আমি যখন দৌড়াব

console.log`1`

গুগল ক্রোমে, আমি যেমন আউটপুট পাই

console.log`1`
VM12380:2 ["1", raw: Array[1]]

ব্যাকটিকটি কেন লগ ফাংশনটিকে কল করছে এবং কেন এটি একটি সূচক তৈরি করছে raw: Array[1]?

জেএস ঘরে ক্যাটগোক্যাট দ্বারা প্রশ্ন উত্থাপিত হয়েছিল, তবে টেম্প্ল্যাটিং স্ট্রিংগুলি সম্পর্কে এমন কিছু উত্তর ছাড়া আর কোনও উত্তর পাওয়া যায়নি যা ঘটছে কেন তা সত্যই ফিট করে না।


উত্তর:


68

এটি ES-6 তে ট্যাগযুক্ত টেমপ্লেট নামে তাদের আরও পড়তে পারে এখানে , মজার বিষয় আমি খুব আড্ডার তারাঙ্কিত বিভাগে লিঙ্কটি পেয়েছি।

তবে কোডটির প্রাসঙ্গিক অংশটি নীচে রয়েছে (আপনি মূলত একটি ফিল্টারযুক্ত বাছাই করতে পারেন)।

function tag(strings, ...values) {
  assert(strings[0] === 'a');
  assert(strings[1] === 'b');
  assert(values[0] === 42);
  return 'whatever';
}
tag `a${ 42 }b`  // "whatever"

মূলত, এটি কেবল কনসোল.লগ ফাংশনটির সাথে "1" ট্যাগ করে, যেমন এটি অন্য কোনও ফাংশনের সাথে করে। ট্যাগিং ফাংশনগুলি টেমপ্লেট স্ট্রিংগুলির পৃথক মানগুলি এবং পৃথকভাবে পৃথক মানগুলি গ্রহণ করে যার উপর আরও কার্য সম্পাদন করা যায়।

বাবেল উপরের কোডটিতে স্থানান্তর করে

var _taggedTemplateLiteralLoose = function (strings, raw) { strings.raw = raw; return strings; };

console.log(_taggedTemplateLiteralLoose(["1"], ["1"]));

আপনি এটি উপরের উদাহরণে দেখতে পাচ্ছেন, ব্যাবেল দ্বারা স্থানান্তরিত হওয়ার পরে, ট্যাগিং ফাংশন (কনসোল.লগ) নিম্নলিখিত এসআই-> 5 টি ট্রান্সপ্লাইড কোডের রিটার্ন মানটি দিয়ে যাচ্ছে।

_taggedTemplateLiteralLoose( ["1"], ["1"] );

এই ফাংশনের রিটার্ন মানটি কনসোল.লগকে দেওয়া হয়েছে যা পরে অ্যারেটি প্রিন্ট করবে।


10
আমি ব্যাখ্যাটি বুঝতে এটি আরও সহজ বলে মনে করেছি- wesbos.com/tagged-template-literals
ডেভ পাইল

34

আক্ষরিক ট্যাগযুক্ত টেমপ্লেট:

নিম্নলিখিত বাক্য গঠন:

function`your template ${foo}`;

ট্যাগযুক্ত টেমপ্লেটকে আক্ষরিক বলা হয়


যে ফাংশনটিকে ট্যাগযুক্ত টেম্পলেট আক্ষরিক বলা হয় নিম্নলিখিত উপায়ে তার যুক্তিগুলি গ্রহণ করে:

function taggedTemplate(strings, arg1, arg2, arg3, arg4) {
  console.log(strings);
  console.log(arg1, arg2, arg3, arg4);
}

taggedTemplate`a${1}b${2}c${3}`;

  1. প্রথম যুক্তি হ'ল সমস্ত স্বতন্ত্র স্ট্রিং অক্ষরের একটি অ্যারে
  2. বাকী যুক্তি ভেরিয়েবলের মানগুলির সাথে মিলে যায় যা আমরা স্ট্রিং ইন্টারপোলেশনের মাধ্যমে পাই। উদাহরণে লক্ষ্য করুন যে এর জন্য কোনও মান নেই arg4(কারণ কেবলমাত্র 3 বার স্ট্রিং অন্তরঙ্গকরণ রয়েছে) এবং undefinedআমরা লগ করার চেষ্টা করার সময় এইভাবে লগ হয়arg4

বাকী প্যারামিটার সিনট্যাক্স ব্যবহার করে:

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

function taggedTemplate(strings, ...rest) {
  console.log(rest);
}

taggedTemplate `a${1}b${2}c${3}`;
taggedTemplate `a${1}b${2}c${3}d${4}`;

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