相关疑难解决方法(0)

Javascript本地和全局变量混淆

我是JavaScript的新手,我在本地和全局变量作用域上做了一些练习,以下是我的代码(小提琴):

var myname = "initial"
function c(){
    alert(myname);
    var myname = "changed";
    alert(myname);
}
c();
Run Code Online (Sandbox Code Playgroud)

当第一个警报被调用时,它显示myname为未定义.所以我的困惑是为什么我无法访问全局实例,myname如果我没有myname在函数中定义,那么它将正常工作.

javascript

80
推荐指数
2
解决办法
2万
查看次数

了解Javascript中的全局和本地范围

我一直在使用Stoyan Stefanov使用面向对象的JavaScript学习Javascript

他提供了一个比较全局和本地范围的示例:

var a = 123;
function f() {
    alert(a);
    var a = 1;
    alert(a);
}
f();
Run Code Online (Sandbox Code Playgroud)

看看这个例子,我预计第一个警报为'123',第二个警报为'1'.瞧,斯托扬说:

您可能希望第一个alert()将显示123(全局变量a的值),第二个将显示1(本地a).不是这种情况.第一个警报将显示"未定义".这是因为在函数内部,局部范围比全局范围更重要.因此局部变量会覆盖具有相同名称的任何全局变量.在第一个alert()时,a尚未定义(因此值未定义),但它仍然存在于本地空间中.

我的解释并不清楚,局部变量如何在第一个警报中覆盖全局变量?任何其他/不同的解释将不胜感激.

javascript

10
推荐指数
1
解决办法
1747
查看次数

解释如何在 javascript 中使用数据类型“var”或“let”存储值以及执行堆栈如何工作

在这里,我不明白当我var在函数中使用 before 变量时会发生什么,它给了我不同的输出,并且不使用var也得到了不同的输出

这是一段代码,您可以轻松地弄清楚发生了什么

function value() {
  var m = 8; //here i am using var as a datatype  
  console.log(m)
}
m = 7
console.log(m);
value();
console.log(m);
Run Code Online (Sandbox Code Playgroud)

而且当我删除 var 或不使用值函数中的任何数据类型时,我得到了不同的输出,这里是一个代码

function value() {
  m = 8; //here i am not using var as a datatype  
  console.log(m)
}
m = 7
console.log(m);
value();
console.log(m);
Run Code Online (Sandbox Code Playgroud)

谁能告诉我发生了什么事吗?谢谢您的宝贵时间

javascript

5
推荐指数
1
解决办法
62
查看次数

标签 统计

javascript ×3