gpt4 book ai didi

Javascript:动态命名的全局变量

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:37:25 25 4
gpt4 key购买 nike

我有一个全局变量,如下所示:

var socket_x = 'whatever';

问题是“x”将取决于用户 session 。假设用户 ID 是 123,我希望全局变量是:

var socket_123 = 'whatever';

这样,每个浏览的用户都会将自己的套接字设置为全局变量。

我只是不知道该怎么做。

我知道我可以使用:

eval('socket_' + userId)   = 'whatever'; //not recommended
window['socket_' + userId] = 'whatever'; //best

但是如果我想像这样声明全局变量,它是行不通的:

var eval('socket_' + userId) = 'whatever';

有人可以帮我解决这个问题吗?

谢谢。

PS:我知道“eval”不应该用于此目的,但这只是为了说明。


编辑:

感谢你们所有人的回答,但它就是行不通。

这是我到目前为止的全局变量(它按原样工作,但我不想将 php 与 javascript 混合使用):

var socket_<?php echo $_SESSION['user_id'];?> = io.connect( 'http://pubsub.pubnub.com', pubnub_setup_private );

如果我按照您的建议改为这样做:

window['socket_'+actual_user_id]= io.connect( 'http://pubsub.pubnub.com', pubnub_setup_private );

它就是行不通。

如果我将其作为局部变量来执行,它会起作用:

eval('socket_'+actual_user_id).emit( 'all', msg_all );

但如果我这样做,它不会:

window['socket_'+actual_user_id].emit( 'all', msg_all );

所以我在这里遇到了 2 个问题:

  • window 对我不起作用,eval 对我有用。
  • eval 作为局部变量而不是全局变量。似乎需要“var”,但不接受在 eval 之前使用“var”。

我可以避免 eval,但我不知道如何避免。

PS:我这里是全局背景。

最佳答案

window['socket_'+userId] = "whatever";

那应该工作得很好。不要将 eval 用于像这样微不足道的事情。

不过,数组会更好:

socket[userId] = "whatever";

关于Javascript:动态命名的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10587604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com