我如何使全局函数内定义的变量newUser?

编程入门 行业动态 更新时间:2024-10-27 12:41:57
本文介绍了我如何使全局函数内定义的变量newUser?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我将变量 newUser 从 options.html 发送到 background.html code> with chrome.extension.getBackgroundPage()就像这样

document.getElementById(save)。addEventListener(click,function() { var newUser = document.getElementById(getEmail)。value; $ var bkg = chrome.extension.getBackgroundPage(); bkg.saveNewUser(newUser); console.log(newUser+ newUser); },false)

在 background.html 我有

函数saveNewUser(newUser) { newUser = newUser; //这应该是全球性的? console.log(来自选项页面的新用户+ newUser); } console.log(newUser from options page+ newUser);

但是 newUser 是函数的局部。我的理解是,如果一个变量保存在没有关键字 var 的函数内,它应该是全局的。但在这种情况下并非如此。函数外的 console.log 会抛出未捕获的ReferenceError:newUser未定义错误。

我做错了什么,以及如何修改范围以在函数外部使用 newUser ?

谢谢。

编辑

background.html 但我仍然得到newUser undefined错误:

var extension_user 函数saveNewUser(newUser) { extension_user = newUser; // this should be global console.log(extension_user from options page+ extension_user); } console.log(选项页面的extension_user+ extension_user);

更新 <我改变了两个页面来反映答案和评论,但仍然在函数之外,变量是未定义的。我做错了什么?

options.html

document.getElementById(save)。addEventListener(click,function() { var newUserEmail = document.getElementById(getEmail).value; var bkg = chrome.extension.getBackgroundPage(); bkg.saveNewUser(newUserEmail); console.log(newUserEmail+ newUserEmail); },false)

background.html

var newUser 函数saveNewUser(newUserEmail) { window.newUser = newUserEmail; //这应该是全局的 console.log(newUser from options page inside function+ newUser); } console.log(newUser from options page+ newUser);

解决方案

变量不存在于全局范围中。因此它给出了一个参考错误。只需在全局范围内将变量 newUser 声明为 var newUser; 。这应该可以解决问题。声明变量时,始终使用 var 关键字。这是一个很好的编程习惯。永远不要在本地范围内声明全局变量。你已经知道为什么。如果这个答案对您有帮助,请投票给我。 该代码澄清我的答案:

var newUser; //新用户声明为全局 函数saveNewUser(newuser) { newUser = newuser; //这应该是全球性的? console.log(来自选项页面的新用户+ newUser); } console.log(newUser from options page+ newUser); //没有更多的引用错误

I send the variable newUser from options.html to background.html with chrome.extension.getBackgroundPage() like this

document.getElementById("save").addEventListener( "click", function () { var newUser = document.getElementById("getEmail").value; var bkg = chrome.extension.getBackgroundPage(); bkg.saveNewUser(newUser); console.log("newUser " + newUser); } , false)

In background.html I have

function saveNewUser (newUser) { newUser = newUser; //this should be global? console.log("newUser from options page " + newUser); } console.log("newUser from options page " + newUser);

but newUser is local to the function. My understanding is that if a variable is saved inside a function without the keyword var it should be global. But in this case it is not. The console.log outside the function throws Uncaught ReferenceError: newUser is not defined error.

What am I doing wrong and how can I fix the scope to use newUser outside the function?

Thanks.

Edit

I tried the following in background.html but I still get newUser undefined error:

var extension_user function saveNewUser (newUser) { extension_user = newUser; //this should be global console.log("extension_user from options page " + extension_user); } console.log("extension_user from options page " + extension_user);

Update

I changed both pages to reflect the answers and comments but still outside the function the variable is undefined. What am I doing wrong?

options.html

document.getElementById("save").addEventListener( "click", function () { var newUserEmail = document.getElementById("getEmail").value; var bkg = chrome.extension.getBackgroundPage(); bkg.saveNewUser(newUserEmail); console.log("newUserEmail " + newUserEmail); } , false)

background.html

var newUser function saveNewUser (newUserEmail) { window.newUser = newUserEmail; //this should be global console.log("newUser from options page inside function" + newUser); } console.log("newUser from options page " + newUser);

解决方案

The newUser variable does not exist in the global scope until the function saveNewUser is called. Thus it gives a reference error. Just declare the variable newUser in the global scope as var newUser;. That should solve the problem. Always use the var keyword when declaring variables. It's a good programming practice. Never declare global variables within local scopes. You already know why. Please vote for me if this answer helped you.

Edits:

Here's the code to clarify my answer:

var newUser; // new user declared as a global function saveNewUser (newuser) { newUser = newuser; // this should be global? console.log("newUser from options page " + newUser); } console.log("newUser from options page " + newUser); // no more reference error

更多推荐

我如何使全局函数内定义的变量newUser?

本文发布于:2023-10-29 07:39:39,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:全局   变量   函数   定义   newUser

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!