相关疑难解决方法(0)

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万
查看次数

通过JavaScript将变量从一个html页面传递到另一个页面

我有两页 - "第1页"和"第2页".在第1页上,有一个文本框,其值为100,最后是一个按钮.

按下按钮我希望javascript将文本框的值保存在全局(?)变量中并跳转到第2页.使用"window.onload"我想要第二个Javascript函数来提醒第1页保存的值.

这是我的Javascript代码:

<script type="text/javascript">

var price; //declare outside the function = global variable ?

function save_price(){

    alert("started_1"); //just for information

    price = document.getElementById('the_id_of_the_textbox').value; 

    alert(price); //just for information         
}
Run Code Online (Sandbox Code Playgroud)

<script type="text/javascript">

function read_price(){

    alert("started_2");

    alert(price);

}
Run Code Online (Sandbox Code Playgroud)

在"第1页"我有这个发送按钮:

<input class="button_send" id="button_send" type="submit" value="Submit_price" onclick="save_price();"/>
Run Code Online (Sandbox Code Playgroud)

它启动Javascript函数并将我正确地重定向到我的page2.

但是在第二页上有这个:

window.onload=read_price(); 
Run Code Online (Sandbox Code Playgroud)

我总是得到全球变量价格的"未定义"值.

我已经阅读了很多关于那些全局变量的内容.例如在这个页面:全局变量的问题..但我不能让它工作......

为什么这不起作用?

html javascript variables global undefined

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

javascript变量未定义

首先,让我们看看代码.

var a=0;
b=1;
document.write(a);
function run(){
    document.write(b);
    var b=1;
}
run();
Run Code Online (Sandbox Code Playgroud)

我认为结果是.01但事实上,结果是0undefined.

然后我修改这段代码.

var a=0;
b=1;
document.write(a);
function run(){
    document.write(this.b); //or document.write(window.b)
    var b=1;
}
run();
Run Code Online (Sandbox Code Playgroud)

是的,这次它按预期运行.01.我无法理解,为什么?

更有趣的是,我再次修改代码.

var a=0;
b=1;
document.write(a);
function run(){
    document.write(b);
    //var b=1;       //I comment this line
}
run();
Run Code Online (Sandbox Code Playgroud)

结果是01.

那么,任何人都能解释一下吗?

感谢您分享您的观点.我简化了这段代码

b=1;
function run(){
    console.log(b); //1
}
Run Code Online (Sandbox Code Playgroud)

二:

b=1;
function run(){
    var b=2;
    console.log(b); //2
}
Run Code Online (Sandbox Code Playgroud)

三:

b=1;
function run(){
    console.log(b); //undefined
    var b=2;
}
Run Code Online (Sandbox Code Playgroud)

javascript

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

函数头部的Javascript变量声明

我被告知javascript变量应该在它们用于函数之前全部出现,这样:

function contrived() {
  var myA, myB;

  myA = 10;
  myB = 20;

  return myA + myB;
}
Run Code Online (Sandbox Code Playgroud)

优先:

function furtherContrivance() {
  var myA = 10;
  var myB = 20;

  return myA + myB;
}
Run Code Online (Sandbox Code Playgroud)

是这样的吗?那为什么呢?

javascript

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

JavaScript变量范围返回"undefined"

JavaScript指南中有一个关于变量范围的句子:"JavaScript中的变量在某种意义上"被提升"或被提升到函数或语句的顶部.但是,未初始化的变量将返回未定义的值."

   /**
    * Example 2
    */
   // will return a value of undefined
   var myvar = "my value";

(function() {
  console.log(myvar); // undefined
  var myvar = "local value";
})();
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么"console.log(myvar);"将返回undefined?我认为第一行已经将myvar初始化为"我的价值".

javascript variables scope

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

功能提升改变var值

任何人都可以解释我为什么会得到不同的输出?

代码1:

var a = 1;

function b() {
  a = 10;
  console.log(a); //output 10
}

b();
console.log(a); //output 10
Run Code Online (Sandbox Code Playgroud)

代码2:

var a = 1;

function b() {
  a = 10;
  console.log(a); //output 10
  function a() {}
}

b();
console.log(a); //output 1
Run Code Online (Sandbox Code Playgroud)

为什么我在调用函数"b"后得到"a"变量的不同输出?需要一些明确的解释这里真正发生了什么?

javascript

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

为什么函数中的变量未定义?

我有示例代码:

var t = 20;
function test () {
  console.log(t);
    var t = 100;
}
test();
Run Code Online (Sandbox Code Playgroud)

结果将是undefined.我认为这t是全局变量,为什么,当我记录它时,是undefined吗?

javascript global-variables

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

javascript/jquery函数范围

 function onMouseClickFunction() {

    $mapCanvas.click(function (e) {
        var x = cursor.getCursorPositionInCanvasX(e.pageX),
            y = cursor.getCursorPositionInCanvasY(e.pageY);
Run Code Online (Sandbox Code Playgroud)

这个例子中的变量范围是函数onMouseclickFunction还是jquery的匿名函数?

我的意思是javascript在其父函数的顶部使用提升创建变量,那么在这个例子中提升的位置是什么?

javascript jquery scope

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