Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >动态创建函数返回不正确的值

动态创建函数返回不正确的值
EN

Stack Overflow用户
提问于 2017-03-24 01:53:06
回答 1查看 28关注 0票数 0

我试图在循环中创建动态函数。但是,动态函数返回意外值。这是我的密码。

代码语言:javascript
运行
AI代码解释
复制
var obj = {
  a: 'A',
  b: 'B'
}

for(var key in obj) {
    var value =  obj[key];
    obj['get'+key] = function() {
    return value;
  }
}

alert(obj.geta());

我期望geta()返回Agetb()返回B。但是,它们都返回B。我尝试过在Chrome中使用调试模式,发现value并不是在每次迭代中重置的。循环中的变量不应该在每次迭代中有所不同吗?

我做错了什么?我是不是有什么不理解的东西?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-24 01:56:48

您应该使用let关键字来声明变量仅在block中可见。

阅读更多关于let关键字的信息。

代码语言:javascript
运行
AI代码解释
复制
var obj = {
  a: 'A',
  b: 'B'
}

for(var key in obj) {
    let value =  obj[key];
    obj['get'+key] = function() {
    return value;
  }
}

alert(obj.geta());

另一种方法是使用.bind()方法,该方法创建一个新函数,在调用该函数时,将其关键字设置为提供的值。

代码语言:javascript
运行
AI代码解释
复制
var obj = {
  a: 'A',
  b: 'B'
}

for(var key in obj) {
    var value =  obj[key];
    obj['get'+key] = (function(val) {
    return val;
  }).bind(this,value);
}

alert(obj.geta());

阅读更多关于绑定函数的信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42996245

复制
相关文章
Winform 中 DesignMode 返回值不正确的问题。
本文转载:http://blog.csdn.net/sabty/article/details/5325260
跟着阿笨一起玩NET
2018/09/18
1.8K0
【Python】函数 ③ ( 函数返回值定义语法 | 函数返回多个返回值 | 代码示例 )
在 Python 函数中 , 通过 return 关键字 , 可以返回一个结果给调用者 , 这个返回结果就是 函数返回值 ;
韩曙亮
2023/10/11
1.1K0
【Python】函数 ③ ( 函数返回值定义语法 | 函数返回多个返回值 | 代码示例 )
[Python基础06]函数的参数&返回值
我们通常在进行一些功能处理的过程中,需要执行一行或者多行代码来完成整个业务流程的处理,如:
周小董
2022/04/12
4.5K0
[Python基础06]函数的参数&返回值
printf函数的返回值!
这样的题目第一眼看上去有一点懵,其实它考的就是printf函数的返回值,及输出字符的个数。 输出结果
lexingsen
2022/02/24
3.7K0
返回指针值的函数(2)
请自己理解,比较简单 /**对前面那个问题,输出有不及格成绩的学生的所有成绩**/ #include <stdio.h> #include <stdlib.h> int main() { float a[3][4]={{50,99,80,50},{55,60,85,90},{10,54,74,26}}; float *p; float *aa(float (*pt)[4]); int i; for(i=0;i<3;i++) { p=aa((
谙忆
2021/01/19
2.9K0
JS|函数的返回值
这个看似能输出结果,实则是在逻辑上是不合理的,我们函数是做某件事或者实现某种功能,而在上面的代码中,函数提供了‘aru’,结果自己却把该参数给输出了。这好比是鸡生了蛋,自己却把蛋给吃了。那我们吃蛋壳吗?所以,接下来我会介绍一种逻辑更严谨的代码。
算法与编程之美
2020/03/12
12.1K0
函数的return(返回值)
return之后,函数就停止,return之后的语句将不执行,但是php也不会报错。
十月梦想
2018/08/29
4.1K0
函数的多个返回值
def func1(): # return 值1,值2 --- return有一个作用是打断程序的运行 return 1 + 1 , 2 + 2, 3+4 num1,num2,num3 = func1() print(func1()) print(num1) print(num2) print(num3)
汪凡
2018/05/29
6.2K0
函数的变量+返回值
函数的变量: 局部变量 和 全局变量 Python中的任何变量都有特定的作用域 在函数中定义的变量一般只能在该函数内部使用,这些只能在程序的特定部分使用的变量我们称之为局部变量 在一个文件顶部定义的变量可供文件中的任何函数调用,这些可以为整个程序所使用的变量称为全局变量 (1)、局部函数: #!/usr/bin/python def fun(): x = 100 ##定义一个内部的函数是 x = 100,只在fun() 内部有效。 print x fun() 执行结果: [[e
老七Linux
2018/05/31
5.5K0
返回指针值的函数(1)
/**有a个学生,每个学生有b门课程的成绩。要求在用户输入学生序号以后, **/ #include <stdio.h> #include <stdlib.h> int main() { float *aa(int (*p)[4],int n); float a[3][4]={{50,99,80,50},{55,60,85,90},{10,54,74,26}}; float *pt; int k; scanf("%d",&k); pt=aa(a,k);
谙忆
2021/01/19
2.5K0
7.5 返回指针值的函数
例如“int *a(int x,int y);”a是函数名,调用它以后能得到一个int *型的指针,即整型数据的地址
小林C语言
2019/08/09
2K0
python函数的返回值
返回值:return 1.没有返回值     #不写return     #只写return:结束一个函数     #return None 2.有一个返回值     #可以返回任何数据类型     #只要返回就可以接收到     #如果在一个程序中有多个返回值,只执行一个(只要执行了return,函数就结束了) 3.有多个返回值     #用多个变量接受,有多少个返回值就有多少个变量     #用一个变量接受:接收到的是一个元祖(Python解释器)
py3study
2020/01/19
3.7K0
java:函数--返回多个值
1、【使用集合类】使用map返回值;这个方法问题是,你并不知道如何返回值的key是什么,只能通过doc或者通过源代码来查看。
用户7886150
2020/12/14
2.9K0
read函数的返回值问题
在学习socket编程的途中, 通过客户端给服务端发送字符串,然后服务端通过read或者recv来读取数据,然后返回读取的字节数. 我在想read返回的读取字节数有没有包含'\0'或者'\n'呢,于是通过一些简单的小例子,来看看实际情况到底如何.
全栈程序员站长
2022/06/25
2.8K0
python之函数的返回值
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的函数返回值相关内容。
jiankang666
2022/12/05
2.2K0
python之函数的返回值
python 编程 函数的返回值
 例如:两所房子408,409,如果408借给409电脑,这个过程,是先把电脑拿出来,放到408门口,再到409门口,409再出来把电脑拿进去才可以使用。
网络豆
2023/10/15
2870
python 编程 函数的返回值
Shell 获取函数的返回值
函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高。 Shell 获取返回值,有两种方式。一种是通过return返回某个数字,一种是通过echo间接的拿到函数处理的结果。
芥末鱿鱼
2022/05/05
5.3K0
stat()函数_stat函数返回值
在 linux 中,经常需要获取文件的属性,比如修改时间,文件大小等等。stat 函数将会帮助我们得到这些信息。
全栈程序员站长
2022/09/24
3.6K0
php递归函数返回值返回不出的问题
发现无论如何,函数的打印结果是正确的,到return的时候只能打印一个null,一直改都没法解决
仙士可
2019/12/18
4.9K0
利用递归函数的返回值
路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。
宇宙之一粟
2020/10/26
1.8K0

相似问题

函数返回不正确的值。

25

函数返回不正确的值

10

函数返回不正确的值

13

函数返回不正确的值。

24

返回不正确值的打印函数

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档