javascript - Javascript 闭包未正确显示参数
问题描述
为了学习它们,我玩了一些闭包,并编写了以下代码:
function showName(a,b,c){
(function nombresAnidados(a){
(function(b){
(function(c){
console.log("hola " + a + " " + b + " " + c);
})(a)
})(b)
})(c)
}
showName("cat","dog","horse");
我期待它打印出:“嗨,猫狗马”,但它打印出:“嗨,马狗马”
请在这里运行它:
function showName(a,b,c){
(function nombresAnidados(a){
(function(b){
(function(c){
console.log("Hi, " + a + " " + b + " " + c);
})(a)
})(b)
})(c)
}
showName("cat","dog","horse");
是什么导致了这种行为?
谢谢。
解决方案
尝试 :
function showName(a, b, c)
{
(function nombresAnidados(x) // here your arg a get the value of c
{
(function (y)
{
(function (z)
{
console.log( `hi : ${x} - ${y} - ${z}` );
})(a) // --> z (cat)
})(b) // --> y (dog)
})(c) // --> x (horse)
}
showName("cat", "dog", "horse");
注意:您的代码并不是真正的闭包;)
推荐阅读
- mysql - SQL query for FIND and REPLACE with if condition
- rest - What if you make a PUT request and there is no such entity on server?
- c# - EPPlus 将逗号视为点
- c# - Wpf - 如何使图片框全视图
- python-2.7 - 如果在odoo8中的on2many中选择相同的产品,如何引发异常
- python - Use function globally or locally?
- wxpython - 如何让我的 wxPython 文本编辑器变暗?
- bootstrap-4 - What is the Bootstrap 4.0+ equivalent to ".hidden-size-down/up"
- sql - Display Serial No month wise according to number of data in table
- android - 找到了 React Native-Haste 包。但是找不到模块错误