我可以访问函数外的函数参数吗?
这是我的代码:
function viewmessage(username,name) {
//alert(name + " : " + username);
$('#heading').html(name);
$.get('/notification/viewmessage', {user:username}, function(data) {
$('#messagesfrom').html(data);
$('#newmessage').slideDown(200);
});
}
alert(name + " : " + username);
Run Code Online (Sandbox Code Playgroud)
你不能,除非你在函数之外声明变量.
您只能在全局范围中使用相同的变量名称:
function viewmessage(username, name){
window.username = username;
window.name = name;
}
alert(window.name + " : " + window.username ); // "undefined : undefined"
alert(name+" : "+username); // ReferenceError: 'name' not defined
Run Code Online (Sandbox Code Playgroud)
在本地范围内,您必须使用在函数内重新声明的变量名称:
var username2, name2;
function viewmessage(username, name){
username2 = username; // No "var"!!
name2 = name;
}
alert(username2 + " : " + name2); // "undefined : undefined"
viewmessage('test', 'test2');
alert(username2 + " : " + name2); // "test : test2"
Run Code Online (Sandbox Code Playgroud)
您可以使用 RegEx(正则表达式)来获取参数:
function viewmessage(username, name) {/*...*/}
var args = viewmessage.toSource()
.match(/\((?:.+(?=\s*\))|)/)[0]
.slice(1).split(/\s*,\s*/g);
//args = ["username", "name"]
Run Code Online (Sandbox Code Playgroud)
但请确保.之后(或之前没有任何空格)。否则,您可能会得到以下结果:
function viewmessage( username, name ) {/*...*/}
var args = viewmessage.toSource()
.match(/\((?:.+(?=\s*\))|)/)[0]
.slice(1).split(/\s*,\s*/g);
//args = [" username", "name "]
Run Code Online (Sandbox Code Playgroud)
或者你trim()在收集它们后使用每个参数:
args.forEach(function (e, i, a) {a[i] = e.trim();});
//args = ["username", "name"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3474 次 |
| 最近记录: |