相关疑难解决方法(0)

JavaScript中的变量范围是什么?

javascript中的变量范围是什么?它们的内部是否与函数外部相同?或者甚至重要吗?另外,如果变量是全局定义的,那么它们存储在哪里?

javascript variables scope var function

1952
推荐指数
18
解决办法
48万
查看次数

Javascript函数范围和提升

我刚刚阅读了一篇关于Ben Cherry的JavaScript范围和提升的精彩文章,其中他给出了以下示例:

var a = 1;

function b() {
    a = 10;
    return;

    function a() {}
}
b();
alert(a);
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,浏览器将发出"1"警报.

我仍然不确定它为什么会返回"1".他说的一些事情就像是:所有的功能声明都被提升到顶部.您可以使用函数来调整变量的范围.仍然没有为我点击.

javascript scope scoping hoisting

85
推荐指数
3
解决办法
1万
查看次数

为什么"undefined equals false"返回false?

当我将undefined和null与Boolean false进行比较时,该语句返回false:

undefined == false;
null == false;
Run Code Online (Sandbox Code Playgroud)

它返回false.为什么?

javascript

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

为什么变量定义的全局未定义?

嗨,大家好,我有一个简单的函数和一个全局变量.

为什么myname undefined不是字符串"global"

var myname = "global"; // global variable
function func() {
    alert(myname); // "undefined"
    var myname = "local";
    alert(myname); // "local"
}
func();
Run Code Online (Sandbox Code Playgroud)

是不是可以引用在该函数范围之外定义的外部变量?在这个全局变量......

我如何解决这个问题,以便undefined从全局变量中得到一个?

javascript global-variables local-variables hoisting

20
推荐指数
1
解决办法
3万
查看次数

当日志后声明的内部函数具有相同的变量名称时,为什么内部函数中的变量返回nan

这里发生了什么事?如果console.log在内部函数中声明一个变量,则会得到不同的结果

我知道var具有功能范围,内部函数可以从其父级访问变量

function outer() {
  var a = 2;

  function inner() {
    a++;
    console.log(a) //log NaN
    var a = 8
  }
  inner()
}
outer()
Run Code Online (Sandbox Code Playgroud)

function outer() {
  var a = 2;

  function inner() {
    a++;
    console.log(a) //log 3
    var b = 8
  }
  inner()
}
outer()
Run Code Online (Sandbox Code Playgroud)

NaN在第一个示例中返回日志3,在第二个示例中返回日志

javascript function

8
推荐指数
1
解决办法
213
查看次数

如果在上部作用域中声明,则在本地作用域中未定义变量,并且在未执行的语句中在本地作用域中声明具有相同名称的var

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

警报1 ;

function a(){
    var h = 1;
    function b(){
        if(false){
            var h = h * 2;
        }
        alert(h);
    }
    b();
}
a();
Run Code Online (Sandbox Code Playgroud)

警报未定义.为什么?

javascript

3
推荐指数
1
解决办法
245
查看次数

JavaScript while循环在var声明之前接受条件

我很惊讶以下代码有效:

while(fred !== "stop"){
    var fred = prompt("Should I stop or go?")
};
Run Code Online (Sandbox Code Playgroud)

我在do while循环中理解这一点:

do {
    code to be executed at least once
?}
while (condition);
Run Code Online (Sandbox Code Playgroud)

在函数声明fred为变量之前,JavaScript如何设置条件?

其他问题我读过涉及到VAR声明的条件.

javascript var while-loop

2
推荐指数
1
解决办法
351
查看次数

Object不是构造函数JavaScript错误

我正在尝试将一些OO设计模式应用于现有脚本,并且在遵循Mozilla帮助中心的一些指南之后,我在尝试实例化对象时仍然遇到错误.

我已经查看了这些资源以寻求帮助,但也许我并不完全理解JavaScript语法.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript

错误:

Uncaught TypeError: GeoLocMap is not a constructor
Run Code Online (Sandbox Code Playgroud)

错误的一行:

var GeoLocMap = new GeoLocMap();
Run Code Online (Sandbox Code Playgroud)

是否应将以下每种方法定义为原型?

谢谢您的帮助!

码:

function GeoLocMap() {

        this.map = -1;
        this.regionName = "";
        this.options = -1;
        this.openCountData = -1;
        this.chart = -1;

        this.getMap = function () {
            if (this.map == -1) {
                this.map = new google.maps.Map(document.getElementById('geochart-colors'), {
                    zoom: 6,
                    //TODO replace with the region retrieved from eventData
                    center: new google.maps.LatLng(lat, long),
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                });
            } else {
                return this.map;
            }
        };

        this.getMapWidth = function …
Run Code Online (Sandbox Code Playgroud)

javascript oop web

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

JS:为什么"x"变量的值未定义?

为什么x下面示例中的变量返回undefined而不是25?

var x = 25;

(function() {
  console.log(x);
  var x = 10;
})();
Run Code Online (Sandbox Code Playgroud)

javascript function hoisting

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

JS中的变量提升

我在这里对可变提升概念有点困惑。为什么第一个console.log(flag)输出undefined?它不应该捕获已经初始化的 false 值在作用域链中向上移动吗?

var flag = false;
(function(){
    console.log(flag);
    var flag = true; // JavaScript only hoists declarations, not initialisations

    console.log(flag);

    if(flag){
        let name = "John";
        const age = "24";

        console.log(name);
        console.log(age);
    }

    //console.log(name); //ReferenceError: name is not defined ( as name is block scoped here )
    //console.log(age);  //ReferenceError: age is not defined ( as age is block scoped )

})();
Run Code Online (Sandbox Code Playgroud)

javascript

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

为什么这个全局变量在函数内未定义?

如果在同一个函数中重新声明和定义了相同的全局变量,为什么这个全局变量在函数中未定义?

var a = 1;
function testscope(){
 console.log(a, 'inside func');
 //var a=2;
};
testscope();
console.log(a, 'outside func');

output:
1 "inside func"
1 "outside func" 
Run Code Online (Sandbox Code Playgroud)

考虑相同的代码,其中 var a = 2; 内部功能块未注释

var a = 1;
function testscope(){
 console.log(a, 'inside func');
 var a=2; 
};
testscope();
console.log(a, 'outside func');

Output
undefined "inside func"
1 "outside func"
Run Code Online (Sandbox Code Playgroud)

javascript

0
推荐指数
1
解决办法
1775
查看次数