日期:2014-05-16  浏览次数:20290 次

求助,javascript函数形参声明时有var和没有var有什么区别?
我的习惯是
function funcA(str){  

}
但是我在网上见过有人写成:  
function funcA(var str) {

}
我是一个菜鸟,想问一下这两种形参的声明方法有什么不同

------解决方案--------------------
你的第二种写法好像是不对的,形参不用加var的,网上很多人说,javascript声明一个变量,有没有var都一样,其实不对的,没有加var话,其实不是声明了一个变量,只是给window对象加了一个属性而已,只有加了var才是声明一个变量,你可以复制下面的代码运行一下。
JScript code
<script type="text/javascript">
attribute=10; //给window对象添加一个属性attribute
alert(attribute); //弹出属性的值
var flag = delete window.attribute; //删除window的attribute属性
alert(flag); //弹出true,证明属性删除成功了
//alert(attribute); //这里会报错,因为window的attribute属性已经被删除了
var variable=10; //声明一个变量
alert(variable); //弹出变量variable的值
flag = delete window.variable; //删除window的属性
alert(flag); //弹出false,删除window属性失败,因为variable是一个变量,不是window的属性
alert(variable); //弹出变量variable的值
</script>
上面打错一个字,意思反了,现在重新回复一下


------解决方案--------------------
探讨

请问:bbjbepzz,
下面我还有一个问题不明白:
JScript code
var dog = function (name)
{
this.Name = name;
};

与下面的有什么不同,请指教。
JScript code
var dog = function (name)
{
var Name = name;
};

------解决方案--------------------
var声明的全局变量MS也是window的一个属性啊~....
探讨
我的习惯是
function funcA(str){

}
但是我在网上见过有人写成:
function funcA(var str) {

}
我是一个菜鸟,想问一下这两种形参的声明方法有什么不同

------解决方案--------------------
探讨

我感觉用不用var都行。
var dog = function (name)
{
this.Name = name;
};

与下面的有什么不同,请指教。
JScript code
var dog = function (name)
{
var Name = name;
};
这个问题,我认为上面的是己经定义了Name做为全局变量,下面是刚定义做为局部变量