এর চেয়ে বেশি জাভাস্ক্রিপ্ট ট্রিপল


89

আমি এই বাক্য গঠনটি অন্য স্ট্যাকওভারফ্লো পোস্টে দেখেছি এবং এটি কী করে তা সম্পর্কে আগ্রহী ছিল:

var len = this.length >>> 0;

কি >>>বোঝায়?


4
এটি একটি ডান শিফট অপারেটর, তবে আপনি কেন শূন্য দ্বারা ডান শিফট করবেন? এটি কি কোনও ধরণের সস্তা উপায় parseInt?
রকেট হাজমত

4
>>>আপনি শূন্য বিটের সাহায্যে স্থানান্তরিত হয়েও সর্বদা সাইন বিটটি শূন্যে সেট করে।
জন ফ্ল্যাটনেস

4
সম্পর্কে এই উত্তর চেক কেন তারা এই ক্ষেত্রে ব্যবহার >>>: অপারেটর stackoverflow.com/questions/3081987/...
খ্রিস্টান সি Salvadó

4
জাভাস্ক্রিপ্ট ট্রিপল এঙ্গেল বন্ধনী
ডাব্লুআরপিআরএল

আমি সেই সিনট্যাক্সটি বিকাশকারী.মোজিলা.আর.এ.এন var length = list.length >>> 0; /
মঙ্গল রবার্টসন

উত্তর:


49

এটি একটি স্বাক্ষরবিহীন ডান শিফট অপারেটর । মজার ব্যাপার হচ্ছে, এটা শুধুমাত্র bitwise অপারেটর যে স্বাক্ষরবিহীন জাভাস্ক্রিপ্ট হবে।

>>> অপারেটর এক্সপ্রেশন 2-তে উল্লিখিত বিটের সংখ্যা দ্বারা এক্সপ্রেশন 1 এর বিটগুলি ঠিক স্থানান্তর করে। বাম দিক থেকে জিরোগুলি পূরণ করা হয়। ডানদিকে সরানো অঙ্কগুলি বাতিল করা হয়।


107

এর উদ্দেশ্যযুক্ত অর্থ উপেক্ষা করা, এটি সম্ভবত এটি যেখানে আপনি ব্যবহার করেছেন তা দেখতে পাবেন:


>>> 0 এটি অনন্য যে এটি কেবলমাত্র অপারেটর যে কোনও প্রকারকে ধনাত্মক পূর্ণসংখ্যায় রূপান্তরিত করবে:

"string"         >>> 0 == 0
(function() { }) >>> 0 == 0
[1, 2, 3]        >>> 0 == 0
Math.PI          >>> 0 == 3

আপনার উদাহরণে, var len = this.length >>> 0এটি পুনরাবৃত্তি করার জন্য পূর্ণসংখ্যার দৈর্ঘ্য পাওয়ার একটি উপায় this, যা-ই টাইপ যাই হোক না কেন this.length


একইভাবে, ~~xকোনও ভেরিয়েবলকে একটি স্বাক্ষরিত পূর্ণসংখ্যায় রূপান্তর করতে ব্যবহার করা যেতে পারে।


আপনি কিভাবে পুনরাবৃত্তি ব্যবহার করে ব্যাখ্যা করতে পারেন >>>?

4
@ কে 48 আমি তার পুনরাবৃত্তি বোঝাতে চাইছি বলে মনে করি না , আমি মনে করি তিনি বলতে চেয়েছিলেন এই সংখ্যাটি দৈর্ঘ্যে পরিণত হওয়ার দৈর্ঘ্য বলে। (অন্যথায়, আমিও সমানভাবে বিভ্রান্ত।) তবে এখানে একটি দুর্দান্ত উত্তর যা আরও বেশি ব্যাখ্যা করে: স্ট্যাকওভারফ্লো
মাইক উইলিয়ামসন

9

এই অপারেটরটি একটি লজিকাল ডান শিফট। এখানে নম্বর 0 বিট স্থানান্তরিত হয়। গাণিতিকভাবে শূন্য বিটের একটি শিফ্টের কোনও প্রভাব থাকতে হবে না।

তবে এখানে মানটি স্বাক্ষরিত 32 বিট পূর্ণসংখ্যায় রূপান্তর করতে ব্যবহৃত হয়।


3

>>>হ'ল বিট-ওয়াইজ অপারেটর, শূন্য-পূরণের ডান শিফট

আমি মনে করি একমাত্র প্রভাব >>> 0একটি ধনাত্মক সংখ্যা একই হিসাবে নিকটতম পূর্ণসংখ্যা বৃত্তাকার নিচে, হয় Math.floor()। আপনার উদাহরণে কেন এটি প্রয়োজনীয় হবে তা আমি দেখতে পাচ্ছি না, কারণ সাধারণত একটি .lengthসম্পত্তি (যেমন একটি Array) ইতিমধ্যে একটি পূর্ণসংখ্যা হবে।

আমিও একটু খাটো দেখা করেছি ~~একই ভাবে ব্যবহৃত: ~~9.5 == 9; // true


আমি সন্দেহ করি এটি Math.abs()negativeণাত্মক সংখ্যার জন্য ব্যবহৃত হিসাবে একই ।
আল কেপ

6
আপনি যদি >>> 0কোনও নেতিবাচক সংখ্যায় করেন তবে এটি এটিকে 2 এর প্রশংসায় রূপান্তরিত করে, তারপর ডান শিফট করে। অতএব -14 >>> 0 == 1073741820। ( এমএসডিএন.মাইক্রোসফটকম /en-us/library/342xfs5s%28v=vs.94%29.aspx )
রকেট হাজমত

@ অ্যালকেপ - হ্যাঁ, আমি ত্রুটিটি দেখেছি এবং এটি স্থির করেছিলাম - প্রথমে পরীক্ষা করা উচিত ছিল, তবে এটি স্পষ্টতই একটি দ্রুত অঙ্কনের প্রশ্ন ছিল :)।
nrabinowitz
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.