+ 1
ES6 Destructuring doesnt work inside function()
Hello, i would like to have ES6 destructuring inside a function, but somehow they just dont want to work if i call it with a function parameters instead of their actual variable names. Can anyone tell whats wrong? https://code.sololearn.com/WBPgcEfWpqd5/?ref=app
9 Réponses
+ 3
Bob_Li
You need to add a semicolon to the first line with console.log in your snippet.
Automatic Semicolon Insertion (ASI) logic see
console.log("var1=", var1, "var2=", var2)
[var2,var1] = [var1,var2]
as
console.log("var1=", var1, "var2=", var2)[var2,var1] = [var1,var2]
https://blog.alexdevero.com/automatic-semicolon-insertion-in-javascript/
+ 2
On this page, there's a note mentioning how function arguments are passed by value, which means functions work with a copy of the data, and changes to arguments' value does not change actual data represented by the argument.
https://www.w3schools.com/js/js_function_parameters.asp
Why do it inside a function when it doesn't need to be?
Consider passing an array or object as argument. The same page above mentioned it may imitate pass-by-reference behaviour.
+ 2
It's okay to do destructuring in functions, but looks like we got no choice but to pass array or object in case the data to be exchanged was external to the function : )
+ 2
ODLNT
😮😮
You are right!
The destructuring square brackets makes it ambiguous and javascript joins it to the console.log before it, turning it to nonsesnse code...
😅
I'm one of those who get distracted with too many semicolons, and javascript generally plays along fine when I don't use semicolons.
I guess this is one of the cases where semicolons matter.
Also, the error message was not very helpful in this case.
The link to ASI is very helpful. i guess I was being over reliant on it and the destructuring pattern is one of its weak point.
Thanks for the nice catch. It was something I would never have thought of.😎
+ 1
Ipang for real?? I have made another code and checked its value (this one is not inside object), and holy shit youre right, the values did not change.....
I always do my code inside function so it is easier to use in other project, and easier to implement/disable.
+ 1
This is weird. console.log before destructuring swap makes it impossible. Anybody have any ideas why?
🤔🤔🤔
let var1 = 10;
let var2 = 5;
//console log makes destructure swap impossible. Try uncommenting the console.log below
//console.log("var1=", var1, "var2=", var2)
[var2,var1] = [var1,var2]
console.log("var1=", var1, "var2=", var2)
+ 1
The variables have to be re-declared if there is a console log between the declaration and destructuring.
var1 = 10
var2 = 5
//console log makes destructure swap impossible.
console.log(var1, var2)
//var1 and var2 have to be redeclared. Uncomment the two lines below
//var1 = 10
//var2 = 5;
[var2,var1] = [var1,var2]
console.log(var1, var2)
0
Java script lesson 25.2 important reminder please tell me about
0
Sarfraz Ahmed Jamali idk i dont have that course unlocked