Is there any specific reason for getting error on float and boolean variable.
Yes: Spread syntax (it isn't an operator) only works with iterable objects (objects that implement iteration). Numbers and booleans are not iterable. Things like arrays and maps and sets are iterable.
console.log(...aVal);
asks the JavaScript engine to iterate through aVal
and then call console.log
with each iterated value as a discrete argument. That is, it asks javaScript to "spread out" that iterable.
Here's an example of spread with an iterable (in this case, an array):
function foo(a, b, c, d) {
console.log(a);
console.log(b);
console.log(c);
console.log(d);
}
let a = ["the", "answer", "is", 42];
foo(...a);
Note how the entries in a
are "spread out" into discrete (separate) arguments for foo
.
The examples below were from earlier when your question was asking about "the rest operator" by mistake. Just for completeness:
Here's an example of rest syntax (also not an operator) in a function signature:
function foo(...args) {
console.log(`I got ${args.length} args`);
}
foo('a', 'b', 'c');
...and rest syntax in a destructuring assignment:
let a = ['a', 'b', 'c', 'd', 'e'];
let [ x, y, ...z ] = a;
console.log(x);
console.log(y);
console.log(z);