অজানা সংখ্যক তর্ক যুক্ত করার উপায় আছে কি:
var print_names = function(names) {
foreach(name in names) console.log(name); // something like this
}
print_names('foo', 'bar', 'baz');
এছাড়াও, আমি কীভাবে যুক্তির সংখ্যা পাস করব?
অজানা সংখ্যক তর্ক যুক্ত করার উপায় আছে কি:
var print_names = function(names) {
foreach(name in names) console.log(name); // something like this
}
print_names('foo', 'bar', 'baz');
এছাড়াও, আমি কীভাবে যুক্তির সংখ্যা পাস করব?
.apply) describes অন্যরা দেখায় যে কীভাবে অজানা সংখ্যক আর্গুমেন্ট পড়তে হয় (ফাংশনের মধ্যে থেকে) (ব্যবহার করে arguments)।
উত্তর:
ম্যাজিক argumentsঅবজেক্টের মাধ্যমে যে কোনও জাভাস্ক্রিপ্ট ফাংশনে পাস হওয়া যুক্তিগুলি আপনি অ্যাক্সেস করতে পারেন , যা অ্যারের অনুরূপ আচরণ করে। argumentsআপনার ফাংশনটি ব্যবহার করার মতো লাগবে
var print_names = function() {
for (var i=0; i<arguments.length; i++) console.log(arguments[i]);
}
এটা যে নোট গুরুত্বপূর্ণ argumentsহয় না একটি অ্যারের। এমডিসির এটিতে কিছু ভাল ডকুমেন্টেশন রয়েছে: https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Funtions#USS_The_arguments_object
আপনি চালু করতে চান, argumentsএকটি অ্যারের রূপান্তরিত করে যার ফলে আপনার মত জিনিস করতে পারেন .slice(), .push()ইত্যাদি ভালো কিছু ব্যবহার:
var args = Array.prototype.slice.call(arguments);
আরও ভাল উপায় আছে! নতুন বিশ্রামের প্যারামিটারগুলির বৈশিষ্ট্যটি আপনার পিছনে রয়েছে:
var print_names = function(...names) {
for (let i=0; i<names.length; i++) console.log(names[i]);
}
spread syntaxবেশ ভুল। এটি rest parameterআপনি দিয়েছেন একটি উদাহরণ। উত্তম উত্তর, তবে বিভ্রান্তিকর যে এটি হিসাবে উল্লেখ করা হয়েছেspread
Array.prototype.slice.call(arguments): medium.com/@andrewsburke/...
বাকী প্যারামিটার সিনট্যাক্সের সুবিধা নিন ।
function printNames(...names) {
console.log(`number of arguments: ${names.length}`);
for (var name of names) {
console.log(name);
}
}
printNames('foo', 'bar', 'baz');
বিশ্রাম পরামিতি এবং আর্গুমেন্ট অবজেক্টের মধ্যে তিনটি প্রধান পার্থক্য রয়েছে:
var
print_names = function() {
console.log.apply( this, arguments );
};
print_names( 1, 2, 3, 4 );
function print_args() {
for(var i=0; i<arguments.length; i++)
console.log(arguments[i])
}
একটা গোপন নামক জাভাস্ক্রিপ্ট প্রতিটি ফাংশন প্রেরণ অবজেক্ট arguments।
আপনি কেবল arguments.lengthফাংশনে পাস করার জন্য আর্গুমেন্টের পরিমাণটি পেতে ব্যবহার করবেন।
আর্গুমেন্টগুলির মাধ্যমে পুনরাবৃত্তি করতে, আপনি একটি লুপ ব্যবহার করবেন:
for(var i = arguments.length; i--) {
var arg = arguments[i];
}
মনে রাখবেন যে argumentsএটি সত্যিকারের অ্যারে নয়, সুতরাং আপনার যদি অ্যারে হিসাবে এটির প্রয়োজন হয় তবে আপনি এটিকে রূপান্তরিত করতে পারেন:
var args = Array.prototype.slice.call(arguments);
var args = Array.prototype.slice.call(arguments);, var args = Array.apply(null, arguments);ইত্যাদি , অনেক উপায় আছে ...
arguments.length। আপনি এটিতে লুপের জন্য একটি ব্যবহার করতে পারেন।
(function () {
for (var a = [], i = arguments.length; i--;) {
a.push(arguments[i]);
};
return a;
})(1, 2, 3, 4, 5, 6, 7, 8)
forব্লকের পরে কেবলমাত্র সেমিকোলনটির প্রয়োজন নেই, তবে আমি শেষ লাইনের শেষে একটি যুক্ত করব।
ES6 এর জন্য এখন অনেক বেশি ভাল
function Example() {
return {
arguments: (...args) =>{
args.map(a => console.log());
}
}
}
var exmpl = new Example();
exmpl.arguments(1, 2, 3, 'a', 'b', 'c');
আশা করি এটা কাজে লাগবে
ES6 এ বিশ্রামের পরামিতি
const example = (...args) => {
for (arg in args) {
console.log(arg);
}
}
দ্রষ্টব্য: আপনি বাকী প্যারামগুলির আগে নিয়মিত পরামিতিগুলি পাস করতে পারেন
const example = (arg1, ...args) => {
console.log(arg1);
for (arg in args) {
console.log(arg);
}
}
আপনি কোনও অ্যারেতে আপনার পরামিতিগুলি সংগ্রহ করতে স্প্রেড / রেস্ট অপারেটরটি ব্যবহার করতে পারেন এবং তারপরে lengthঅ্যারেরটি হবে আপনার পাস হওয়া প্যারামিটারের সংখ্যা:
function foo(...names) {
console.log(names);
return names;
}
console.log(foo(1, 2, 3, 4).length);
ব্যাবেলজেএস ব্যবহার করে আমি ফাংশনটিকে ওল্ডস্কুল জেএসে রূপান্তর করেছি:
"use strict";
function foo() {
for (var _len = arguments.length, names = new Array(_len), _key = 0; _key < _len; _key++) {
names[_key] = arguments[_key];
}
console.log(names);
return names;
}
let x = function(){
return [].slice.call(arguments);
};
console.log(x('a','b','c','d'));
আমি এটি করতে পছন্দ করি:
আপনি আর্গুমেন্টের সংখ্যা না জানলে এটি সাহায্য করবে না, তবে আপনি যদি তাদের ক্রমটি মনে রাখতে না চান তবে এটি সহায়তা করে।
/**
* @param params.one A test parameter
* @param params.two Another one
**/
function test(params) {
var one = params.one;
if(typeof(one) == 'undefined') {
throw new Error('params.one is undefined');
}
var two = params.two;
if(typeof(two) == 'undefined') {
throw new Error('params.two is undefined');
}
}