JavaScript 函数参数传递问题

JavaScript 函数参数传递问题,第1张

1 同样都是值传递为什么可以给对象加属性?

参数为对象是,就不只是值传递而是引用传递了。所以楞以通过objname改变原对象的属性。

2 还有后面的var obj是把前一个obj覆盖了吗?

是的,当你再次var obj=new Object()的时候,会让js引擎将obj作为一个新的变量,参数obj在后面的代码中已经无效了。

3 左边错误没有输出。右边正常,变量声明放在使用的后面只有值类型的变量可以吗?

在js中,变量的声明永远都需要放在变量使用前,右边的结果参见上面2的说明。左边出错,是因为在执行到kkname = 5的时候,会先检查变量kk是否存在,若不存在,当然不能调用它的name属性了,所以后面的代码都不会再执行。而在右边,kk=5相当于var kk = 5;所以可以在后面使用alert(kk)输出,但是再后面的代码 var kk 则会覆盖前面的kk变量(也就是说kk不再是5,而是一个新的变量了)。

// js也有地址传递, 来个例子吧

// 接收一个Object,没有返回值

function test (obj2) {

    obj2prop = 2; // 修改obj的属性

    obj2attr = 3; // 添加属性

}

// obj是一个对象

var obj = {

    prop: 1 // obj的属性

};

test(obj);

// 没有返回值,但是obj被修改了

alert(objprop); // 2

alert(objattr); // 3

// 这种情况就是地址传递吧for (var i = 0; i < 10; i++) {

    var obj = $("#a_id" + i);

    $ajax({

        url: "/url",

        type: "post",

        dataType: "json",

        data: ({}),

        success: success

    });

    function success(json) {

        // 这里obj不会是"#a_id" + i

        // 而是for循环结束之后的obj,也就是#a_id9

        alert(objtext());

    }

}

// for循环结束之后obj是#a_id9, 也就是最后一个

alert(objattr('id') == 'a_id9'); // true

Javascript函数中传递带空格的参数

通常在页面中要让某些内容点击后产生点击事件(非页面跳转)都会使用onclick,但是这样不适于需要传递参数的情况,于是写成直接调用Javascript函数的方式:<a href=javascript:somefunction(args)>content</a>。注意,这么写是有问题的,问题就在于somefunction中的参数args的值不能含有空格,否则浏览器会认为空格后面的内容是<a>标签的某个属性,正确的写法应该是用引号将javascript:somefunction(args)引起来。另外还有一种方法可不必加这对引号,先将可能带空格的参数用escape函数处理一下,然后在somefunction中用unescape函数解码就行了。值得注意的是用encodeURI、decodeURI加解码却不能成功。

encodeURIComponent和decodeURIComponent三对组合之间的区别:

escape不编码字符有69个:,+,-,,/,@,_,0-9,a-z,A-Z

encodeURI不编码字符有82个:!,#,$,&,',(,),,+,,,-,,/,:,;,=,,@,_,~,0-9,a-z,A-Z

encodeURIComponent不编码字符有71个:!, ',(,),,-,,_,~,0-9,a-z,A-Z

简单总结一下用法,在不经过URL的时候,即纯Javascript调用用escape;涉及URL时,通常用encodeURI对整个URL进行处理,仅当URL中含有特殊参数时,对该特殊参数局部使用encodeURIComponent。

以上就是关于JavaScript 函数参数传递问题全部的内容,包括:JavaScript 函数参数传递问题、js/html 请教个js函数参数传递的问题、JS函数如何传递带空格参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9688213.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存