কেউ জাভাস্ক্রিপ্টে ডলার সাইন ব্যাখ্যা করতে পারেন?


378

প্রশ্নে কোডটি এখানে:

var $item = $(this).parent().parent().find('input');

ভেরিয়েবল নামের ডলারের সাইন এর উদ্দেশ্য কী, শুধু এটি বাদ দিলে নয় কেন?



[ttony21 এর উত্তর] [1] জাভাস্ক্রিপ্টে কোনও প্রকার নেই বলে উল্লেখ করে ভুল, সিএফ। [সরকারী ডকুমেন্টেশন] [2] [1]: stackoverflow.com/questions/846585/... [2]: ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf
anddam

এই থ্রেডটি বেশ পুরানো তবে এটি মনে হচ্ছে যে মূলধারার ব্রাউজারগুলি $, $$ গ্লোবাল বৈকল্পিকগুলিকে মানক করেছে। $ বনাম What কী করার কথা?
নিক সোটিরিস

কিছুই না, যদি না আপনি বলেন ব্রাউজারের কনসোলটি না থাকে। ক্রোম উদাহরণস্বরূপ $ এবং $$ কে শর্টকাট হিসাবে document.querySelectorএবংdocument.querySelectorAll
কেভিন বি

উত্তর:


381

ভেরিয়েবলের একটি '$' অর্থ দোভাষীটির কাছে বিশেষ কিছুই নয়, অনেকটা আন্ডারস্কোরের মতো।

আমি যা দেখেছি, অনেকগুলি jQuery ব্যবহার করে (যা আপনার উদাহরণ কোডটি আমার মতো লাগে) ভেরিয়েবলের উপসর্গের ঝোঁক থাকে যার সাথে jQuery অবজেক্ট থাকে $ যাতে তারা সহজেই চিহ্নিত হয়ে যায় এবং বলে, পূর্ণসংখ্যার সাথে মিশে যায় না ।

$()JQuery এ ডলার সাইন ফাংশন একটি লাইব্রেরির ফাংশন যা প্রায়শই ব্যবহৃত হয়, তাই একটি সংক্ষিপ্ত নামই কাম্য।


86
দ্রষ্টব্য: ডিফল্টরূপে, jQuery "jQuery" এর শর্টকাট হিসাবে "$" ব্যবহার করে। অন্যান্য জাভাস্ক্রিপ্ট লাইব্রেরি ব্যবহারে এর কিছু প্রভাব রয়েছে। ডকস.জকোয়ারী
ইউজিং_জুয়্যারি_উইথ_অথার_

17
অন্য কথায়, vari পরিবর্তনশীল / ফাংশন নামের যে কোনও গ্রহণযোগ্য প্রতীকের সাথে তুলনীয়। করানো var $=function(){}যেমন করায় তেমনি একই রকম var a=function(){}
এফ -3000

24
আপনার মন্তব্য থিম্মায়ায় "ডিফল্টরূপে, jQuery" "jQuery" "এর শর্টকাট হিসাবে" $ "ব্যবহার করে Jquery এর ওয়েবসাইটে প্রতিটি পৃষ্ঠার শীর্ষে গা bold় অক্ষরে থাকতে হবে, তাদের উদাহরণগুলি ভয়াবহভাবে নথিভুক্ত করা হয়েছে।
রাস্টিএইচ

ফাংশন প্যারামিটার হিসাবে $ নির্দিষ্ট করা হলে কী হবে? আমি কিছু কোড দেখছি যেমন jQuery(document).ready(function($){... তারপর $টি ফাংশন বাস্তবায়নের অভ্যন্তরে ব্যবহৃত হয়।
এখনও_ড্রিমিং_1

4
@ থ্রোওয়েআকাউন্ট3 মিলিয়ন এটি নামের মাত্র একটি অংশ। $scope$ এর ক্ষেত্রে সেই নামের একটি চরিত্র। ঠিক যেমন আপনি অপসৃত করা eশেষে $scope, এটি কাজ করবে না, তাই এর গ্রহণ $এছাড়াও না করবে না হবে। আপনি যদি এমন কিছু দেখতে পান $( "a" ).addClass( "test" )তবে ডলার চিহ্নটি যা হয় তার পুরো নাম।
এখনও_ড্রিমিং _

49

আপনার উদাহরণে নামের একটি চরিত্র হওয়া ছাড়া $ এর কোনও বিশেষ তাত্পর্য নেই।

তবে ECMAScript 6 (ES6) এ $ কোনও টেম্পলেট লিটারাল উপস্থাপন করতে পারে

var user = 'Bob'
console.log(`We love ${user}.`); //Note backticks
// We love Bob.

37

$ চিহ্নটি ভেরিয়েবল এবং ফাংশনগুলির জন্য সনাক্তকারী।

https://web.archive.org/web/20160529121559/http://www.authenticsociety.com/blog/javascript_dollarsign

ডলার সাইনটি কী জন্য এটির একটি স্পষ্ট ব্যাখ্যা রয়েছে।

এখানে একটি বিকল্প ব্যাখ্যা: http://www.vcarrer.com/2010/10/about-dollar-sign-in-javascript.html


2
জাভাস্ক্রিপ্টের প্রকারভেদ রয়েছে; এবং যে কোনও ক্ষেত্রে, ডলার সাইন এমনকি এর সাথে কীভাবে সম্পর্কিত? এটি কেবলমাত্র একটি চরিত্র যা জাভাস্ক্রিপ্টে আইনী সনাক্তকারী হিসাবে দেখা যায়।
এরিক কাপলুন

10
আমি নিশ্চিত নই যে আমি সেই লিঙ্কটিকে একটি "পরিষ্কার" ব্যাখ্যা বলব। কার্যকারিতা এবং পরিবর্তনশীল নামগুলি সংজ্ঞায়িত করার সময় $ কেবল একটি বৈধ চরিত্রটি বোঝাতে সত্যই কি 6+ অনুচ্ছেদে লাগে?
সামান্য

1
দেখে মনে হচ্ছে প্রথম লিঙ্কটি আবার কাজ করছে। আমাকে @ স্লাইটের সাথে একমত হতে হবে যে বিকল্প ব্যাখ্যাটি ভয়ানক।
স্যান্ডার গ্যারেটসেন

লিঙ্কে থাকা নমুনা কোডটি বোঝা বেশ সহজ। অসাধারণ!
19

32

ডলার চিহ্নটি একটি সাধারণ চিঠি বা আন্ডারস্কোর ( _) এর মতোই বিবেচিত হয় । দোভাষীর কাছে এর কোনও বিশেষ তাত্পর্য নেই।

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

সুতরাং, $জাভাস্ক্রিপ্টে একটি বৈধ ফাংশন বা পরিবর্তনশীল নাম।

আপনি কেন শনাক্তকারীতে ডলারের সাইন চাইবেন?

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

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

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


আপনি var $j = jQuery.noConflict();এখন এইটির সাথে jQuery অবজেক্টটি ননফ্লিক্ট করতে পারেন $ j হল jQuery অবজেক্ট।
জাস্টিন লিউ

6

ডলার সাইনটি 2015-2016 এ 'টেমপ্লেট লিটারালস ' হিসাবে বাস্তবে স্ক্রিপ্টে ব্যবহৃত হয় । উদাহরণ:

var a = 5;
var b = 10;
console.log(`Sum is equal: ${a + b}`); // 'Sum is equlat: 15'

এখানে কাজের উদাহরণ: https://es6console.com/j3lg8xeo/ এই চিহ্নটি " ` " লক্ষ্য করুন , এটি সাধারণ উদ্ধৃতি নয়।

লাইব্রেরি jQuery এর সাথে কাজ করার সময় আপনিও দেখা করতে পারেন ।

ular নিয়মিত এক্সপ্রেশনগুলিতে সাইন মানে লাইন শেষ।


4

কোন কারণ নেই. সম্ভবত যিনি এটিকে কোড করেছিলেন তিনি পিএইচপি থেকে এসেছিলেন। এর একই প্রভাব রয়েছে যেমন আপনি এটি "_item" বা "আইটেম" বা "আইটেম $$" নামকরণ করেছেন।

প্রত্যয় হিসাবে ("আইটেম $" যেমন "আইটেমগুলি উচ্চারণ"), এটি একটি ডোম উপাদান হিসাবে একটি পর্যবেক্ষণযোগ্যকে হাঙ্গেরিয়ান নোটেশনের অনুরূপ "ফিনিশ নোটেশন" নামে একটি কনভেনশন হিসাবে চিহ্নিত করতে পারে।


1

এখানে একটি ভাল সংক্ষিপ্ত ভিডিও ব্যাখ্যা: https://www.youtube.com/watch?v=Acm-MD_6934

একমা ইন্টারন্যাশনাল আইডেন্টিফায়ার অনুসারে নামগুলি হ'ল টোকেন যা ইউনিকোড স্ট্যান্ডার্ডের অধ্যায় 5 এর "আইডেন্টিফায়ার" বিভাগে প্রদত্ত ব্যাকরণ অনুসারে ব্যাখ্যা করা হয় , কিছু ছোট পরিবর্তন রয়েছে। একটি সনাক্তকারী হ'ল একটি সনাক্তকারী নাম যা কোনও রিজার্ভ ওয়ার্ড নয় ( দেখুন 7.6.1 )। ইউনিকোড শনাক্তকারী ব্যাকরণ ইউনিকোড স্ট্যান্ডার্ড দ্বারা নির্দিষ্ট উভয় আদর্শিক এবং তথ্যমূলক চরিত্রের বিভাগের উপর ভিত্তি করে। ইউনিকোড স্ট্যান্ডার্ডের 3.0 সংস্করণে বর্ণিত বর্ণগুলিতে অক্ষরগুলি অবশ্যই ECMAScript প্রয়োগের সমস্ত অনুসারে সেই বিভাগগুলির হিসাবে বিবেচনা করা উচিত th এই স্ট্যান্ডার্ডটি নির্দিষ্ট অক্ষর সংযোজন নির্দিষ্ট করে:

ডলার সাইন ($) এবং আন্ডারস্কোর (_) কোনও আইডেন্টিফায়ারনেমে যে কোনও জায়গায় অনুমোদিত

আরও পাঠ্য পাওয়া যাবে: http://www.ecma-international.org/ecma-262/5.1/#sec-7.6

ইকমা ইন্টারন্যাশনাল একটি শিল্প সংস্থা যা ১৯61১ সালে প্রতিষ্ঠিত হয়েছিল এবং তথ্য ও যোগাযোগ প্রযুক্তি (আইসিটি) এবং কনজিউমার ইলেক্ট্রনিক্স (সিই) এর মানিকরণের জন্য উত্সর্গীকৃত।


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

... @ তরতনল্লামা আপনি যদি আমার উত্তরটি ডাউনগ্রেড করেন তবে আমার আপডেট হওয়া উত্তরটি পড়ুন। ধন্যবাদ.
নামিস

আমি ছিলাম না! আমি শুধু এটি পতাকাঙ্কিত।
তরতনল্লামা

... ঠিক যাকে এটিকে নিচে ভোট দিয়েছেন, তাকে দয়া করে ব্যাখ্যা করুন এবং কেন আমার সম্পাদিত উত্তরটি পড়েছেন। ধন্যবাদ.
নামিস

5
... @ তরতনল্লামা এটি (আবার) প্রমাণ করে যে স্ট্যাকওভারফ্লোস বেনামে ডাউনগ্রেড বৈশিষ্ট্যটি নষ্ট হয়ে গেছে। স্বীকৃত উত্তরের সাথে পুরানো প্রশ্নের উত্তর দেওয়া আমার পক্ষে ঠিক কারণ যেহেতু আমি যখন উত্তরগুলির জন্য চারপাশে ব্রাউজ করি তখন অন্যান্য উত্তরগুলি দেখতে আমার পক্ষে দরকারী।
নামিস

1

JQuery ব্যবহার করার সময় $, পরিবর্তনশীল নামের একটি উপসর্গ হিসাবে প্রতীক ব্যবহার নিছক কনভেনশন দ্বারা; এটি সম্পূর্ণরূপে alচ্ছিক এবং কেবলমাত্র উদাহরণ হিসাবে যেমন ভেরিয়েবল একটি jQuery অবজেক্ট ধারণ করে তা পরিবেশন করে।

এর অর্থ হ'ল যখন অন্য কোনও jQuery ফাংশনটি অবজেক্টটিতে কল করা দরকার তখন আপনার $()আবার এটিকে মোড়ানোর প্রয়োজন হবে না । উদাহরণস্বরূপ, এগুলি তুলনা করুন:

// the usual way
var item = $(this).parent().parent().find('input');
$(item).hide(); // this is a double wrap, but required for code readability
item.hide(); // this works but is very unclear how a jQuery function is getting called on this 

// with $ prefix
var $item = $(this).parent().parent().find('input');
$item.hide(); // direct call is clear
$($item).hide(); // this works too, but isn't necessary

সঙ্গে $উপসর্গ ভেরিয়েবল ইতিমধ্যে jQuery এর বস্তু অধিষ্ঠিত অবিলম্বে স্বীকৃত হয় এবং কোড আরো পাঠযোগ্য, এবং ঘটিয়েছে ডবল / একাধিক মোড়ানো $()

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