如何在javascript中的函数内访问外部函数varible?

时间:2017-01-17 05:27:32

标签: javascript php jquery variables scope

我的 javascript 中的percent变量,变量是从PHP传递结果。

这是javascript:

test.js

console.log(percent); //* //variable was passed from PHP

function displayLoading() {
    console.log(percent); //**
}

如果我使用* console.log(percent)函数,它将在控制台中print_out percent的值。但如果我在console.log(percent)函数中使用** displayLoading,则会将print_out打印为 undefined

如何在函数内访问外部variable

我试过这种方式

来自stackoverflow

var funcOne = function() {
    this.sharedVal = percent;
};
var funcTwo = function() {
    console.log(funcOne.sharedVal);
};

并将print_out undefined 提供给控制台日志。

来自stackoverflow

var per = percents
console.log(per);   //this line print_out the value into console log

function displayLoading() {
   console.log(per);    //this print_out "undefined" into console log.
   var myPercent = per;
   console.log(per);    //and also print_out "undefined" into console log.
}

上面的两个代码都不适合我,任何人都知道另一种方式吗? 感谢任何帮助,谢谢:)

EDITED:

上面的javascript中的percents,我从这段代码中得到:

headerController.php

<?php
   $percent = $percent + 10;
?> 
    <script type="text/javascript">
       var percents = <?= $percent; ?>;
    </script>
    <script type="text/javascript" src="../../web/js/test.js"></script>

主要问题是,我得到undefined的原因是因为我在变量从php传递之前就打印了percents

如何将php变量直接传递到javascript文件中的函数(本例中为test.js)?

5 个答案:

答案 0 :(得分:0)

定义全局变量。

percent = 'foobar';
// window.percent = 'foobar'; /* same thing */

function showthing() {
  console.log(percent);
}

showthing();

答案 1 :(得分:0)

尝试从var删除var per = percents。像这样

per = percents
console.log(per);   //this line print_out the value into console log

function displayLoading() {
   console.log(per);    
   var myPercent = per;
   console.log(per);    
}

答案 2 :(得分:0)

我不知道你在谈论哪个控制台(浏览器或JS REPL - 但它们几乎相同),但REPL总是输出函数的返回值。 我不认为它涉及全球/地方范围,如上所述。

>> p = 5; function dl() { console.log(p); }
<- 5
>> dl()
   5 
<- undefined
>> foo = function() { return "foo" }
<- function foo()
>> foo()
<- "foo"

答案 3 :(得分:0)

变量:

1)声明var关键字具有声明它的局部范围。(如果你在函数外声明它,你不能在函数内使用它,反之亦然。

示例:

   var  percent = 'foobar';
    function showthing() {
      console.log(percent);//wrong
    }
    console.log(percent);//correct

2)在特定函数中声明在函数内具有局部范围。

示例:

     function showthing() {
     var  percent = 'foobar';
      console.log(percent);//correct
    }
console.log(percent);//wrong

答案 4 :(得分:0)

从AJ中传递变量的方式是否有问题,比如AJAX?当你调用displayLoading()时,AJAX调用可能还没有回答。