51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2777|回复: 8
打印 上一主题 下一主题

[讨论] QTP中function中变量作用域的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-5-31 15:02:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先请看代码

dim sety
sety="函数外部值"

function setstring(setvalue)
msgbox(setvalue)
msgbox(sety)
end function

call setstring("传递的值")

运行后发现,msgbox(sety)也能输出 "函数外部值"
难道QTP中的函数可以不需要传递值就可以在函数内部使用?这怎么和我记忆中老师说的变量作用域不一样呢..
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-5-31 15:14:38 | 只看该作者
因为你定义的是全局变量,所以...
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2009-5-31 15:23:30 | 只看该作者

回复 2# 的帖子

全局变量不是需要特别申明么
我只是用普通的声明方式呀.
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-5-31 16:05:11 | 只看该作者
因为你的变量声明在Function外,所以它就是全局变量了。在Function内,就是局部变量。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2009-5-31 16:22:27 | 只看该作者

回复 3# 的帖子

en 需要特别声明:
dim sety          '这是全局变量。。。呵呵。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-5-31 17:48:11 | 只看该作者

回复 1# 的帖子

我觉得这里将它说成是全局变量有些不妥
准确的说这个函数的作用域贯穿在它所处的ACTION中,而function的作用域也在该ACTION中,所以也适合该function
全局变量是针对整个project而言的

[ 本帖最后由 hk_ella 于 2009-6-1 09:52 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2009-5-31 18:19:19 | 只看该作者

回复 6# 的帖子

感觉6#说的这个比较合理,
因为实际测试的结果是action内部的函数变量的值不需要传递能使用.
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2009-6-1 15:37:50 | 只看该作者
原帖由 onlonely 于 2009-5-31 18:19 发表
感觉6#说的这个比较合理,
因为实际测试的结果是action内部的函数变量的值不需要传递能使用.



你要查查对于Action之间传值的文章。如果在一个Action中,在Function外定义的变量,就是全局变量了。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2009-6-5 17:01:14 | 只看该作者
VBS是弱类型语言 在使用变量之前可以不做声明而直接赋值 同时同意6楼的看法
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-12 17:48 , Processed in 0.068833 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表