簡體   English   中英

如何在javascript函數內部訪問外部函數變量?

[英]How do I can access an outside function varible, inside a function in javascript?

我的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值。 但是,如果我在displayLoading函數內部使用** console.log(percent) ,它將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.
}

上面的兩個代碼都不適合我,有人知道另一種方式嗎? 任何幫助表示贊賞,謝謝:)

編輯:

我從上面的代碼中獲取上面的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傳遞之前,我就print_out了這些percents

如何將php變量直接傳遞到javascript文件(在這種情況下為test.js)中的函數?

定義一個全局變量。

 percent = 'foobar'; // window.percent = 'foobar'; /* same thing */ function showthing() { console.log(percent); } showthing(); 

嘗試從var per = percents刪除var 像這樣

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);    
}

我不知道您在說哪個控制台(瀏覽器或JS REPL-但是它們幾乎相同),但是REPL總是輸出函數的返回值。 如上所述,我認為這與全球/本地范圍無關。

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

一個變量:

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

從PHP傳遞變量(例如AJAX)的方式是否有問題? 當您調用displayLoading()時,AJAX調用可能尚未應答。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM