
正文
js函数中形参和全局变量重名,js全局变量在函数里改变值
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
为什么说fun2函数中a,b为全局变量?
fun2中的a,b直接使用的就是前面定义的a,b。所以是全局的。
正因为a,b是全局变量,fun2为a,b所赋的值3,4才能在主函数中生效。
fun2()函数中的a,b是全局变量。fun2()里的是局部变量用引用或指针,全局变量所有的函数都可以使用它。
在程序的一开始定义的变量称为全局变量。全局变量作用域是整个程序;局部变量作用域是定义该变量的子程序。当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。fun1中输出5 6, main中输出3 4和换行符。
fun1有局部变量a和b,局部变量会屏蔽它上一层同名的变量,也就是说fun1里边的a和b和全局变量a和b是不同的变量。所以fun1(5, 6),打印5, 6,而不会改变全局变量a和b的值。
fun2什么都不传,就只是给a和b赋了一个值,而a和b是全局变量,不管哪个函数用到的都是这两个a和b,主函数调用fun2后再输出a和b就是3,4了。
相关问答
Q1: C语言子模块中函数入口参数名可以跟全局变量名(结构体变量)一样吗
可以,这个几十涉及到变量的作用域了。除了全局变量,局部变量的作用域在函数体内 另外哪怕同一个函数体内 定义如下变量也是ok的:int i =1;for(int i=0;i5;i++){ 。。
不行。自定义函数名可以与库函数名重名,且优先选择自定义函数,但不能与代码变量名重名。但自定义函数中的代码可以用与这个函数名相同的变量名。早期的编译器是这样,现在与C++兼容的编译器如何处理此事,没试过。
可以相同,函数体中使用的是形参。以下是我写的代码以及输出,没有报错,输出的2为形参的值。
可以啊。结构体里的是结构体私有的,不加结构体变量.或“结构体指针-“限定是访问不到的。
局部变量是指在一个子函数里面定义的变量,这个变量只有这个子函数才能够使用,所以只需要保证在这个子函数里面名称不重复即可,定义的时候可以给初始值,也可以不给。在程序中,如果用不到,就可以不定义。(5)子函数:专门实现某个功能所定义的程序块。
Q2: 在C/C++中,全局变量,形参名字可以相同吗
所以不能那么解释。 根源在于:形参也是一个变量,但是这个变量是一个局部变量。 例如我们定义了一个全局变量,在函数内定义了一个和全局变量同名的局部变量,想必大家都清楚,局部变量会隐藏全局变量,即是说全局变量在这个函数内是不可用的。 这和形参的道理是一致的。
可以,他们之间没有直接联系。入口参数(形参)与外面的全局变量,如同你在某一函数中定义一个与全局变量同名的局部变量一样,函数会优先考虑局部变量,忽略全局变量。
楼上说形参只是一个位置,那么实参就不是一个位置么?这样说来,任何语句其实都是一个位置对应在硬件上。所以不能那么解释。根源在于:形参也是一个变量,但是这个变量是一个局部变量。
名字是否相同并不重要,重要的是类型必须相同。因为,形参是所在函数的局部变量,所以形参在所在函数中会被多次使用,你需要统筹考虑。而实参是主调函数的局部变量,是根据实际需要作为参数调用被调函数的,是否调用被调函数并不需要另外考虑实参名称,这是与形参的主要不同点。
Q3: 同一个页面中的两个独立的js之间变量名相同可以么?
1、这样做法其实是有两个不同的comm.js。a界面引用的comm.js,与b界面引用的comm.js虽然是相同的文件,但是在两个页面是不会共享内存的把。
2、不可以一样,如果一样则会被覆盖。比如:var a = abcd;function a(){ alert(1);}alert(a);//这里的a是变量abcd,因为解析时会先读入变量申明以及方法定义,然后再是对变量的初始化,所以变量值覆盖了方法名。
3、最好的方法是使用闭包,将变量都封装起来。另外你这里发生的问题,我认为很有可能是直接使用了VAR TEMPA=TEMP,VAR TEMPB=TEMP,这样的做法,在JS中obj的赋值其实是将指针指向已有变量,这样会在操作中相互影响。
Q4: 在C语言中当形参与函数内定义的变量重名时,回有什么后果
1、例如我们定义了一个全局变量,在函数内定义了一个和全局变量同名的局部变量,想必大家都清楚,局部变量会隐藏全局变量,即是说全局变量在这个函数内是不可用的。这和形参的道理是一致的。参数传递实际上是一个初始化的过程,就是定一个形式参数,将实际参数赋值给他。首先,类型一定要匹配。
2、不会发生冲突。但主要是你不要被其困惑就是真的要做的了。因为这是C语言设计中的一个应用。作用域的应用含义。函数所带参数的作用域只在该函数体中起到作用。就相当于,函数内部声明的两个变量。是局部变量。而主函数中的变量定义又是主函数当中的作用域。主函数中变量的作用域是全局变量。
3、名字是否相同并不重要,重要的是类型必须相同。因为,形参是所在函数的局部变量,所以形参在所在函数中会被多次使用,你需要统筹考虑。而实参是主调函数的局部变量,是根据实际需要作为参数调用被调函数的,是否调用被调函数并不需要另外考虑实参名称,这是与形参的主要不同点。
4、可以,这个几十涉及到变量的作用域了。除了全局变量,局部变量的作用域在函数体内 另外哪怕同一个函数体内 定义如下变量也是ok的:int i =1;for(int i=0;i5;i++){ 。。
5、不合法。这样会编译报错的。除非不在同一个文件中。
6、是的!不可以,不光C不行,C++也不行,我认为其它语言也不可以,如果函数和变量同名在编译的时候如何判断用的是函数还是变量呢?PS:函数在不写函数调用符号时指的是函数的指针,我想这你也应该清楚。
关于js函数中形参和全局变量重名和js全局变量在函数里改变值的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






