在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/PHP  HTML/ 關(guān)于作用域的問(wèn)題,函數(shù)非全局函數(shù)的影響?

關(guān)于作用域的問(wèn)題,函數(shù)非全局函數(shù)的影響?

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>無(wú)標(biāo)題文檔</title>
<script>
function fn1(data) {//比如把fn1函數(shù)放入window.load=function(){}的函數(shù)里面為什么就不能執(zhí)行的?是什么原因?qū)е碌??就是fn1不是全局函數(shù)的話為什么出錯(cuò)了?
    var oUl1 = document.getElementById('ul1');
    var html = '';
    for (var i=0; i<data.length; i++) {
        html += '<li>'+data[i]+'</li>';
    }
    oUl1.innerHTML = html;
}
function fn2(data) {
    var oUl2 = document.getElementById('ul2');
    var html = '';
    for (var i=0; i<data.length; i++) {
        html += '<li>'+data[i]+'</li>';
    }
    oUl2.innerHTML = html;
}
function fn3(data) {
    var oUl3 = document.getElementById('ul3');
    var html = '';
    for (var i=0; i<data.length; i++) {
        html += '<li>'+data[i]+'</li>';
    }
    oUl3.innerHTML = html;
}
</script>
<script>
window.onload = function() {
    
    var oBtn1 = document.getElementById('btn1');
    
    var oBtn2 = document.getElementById('btn2');
    
    oBtn1.onclick = function() {
        
        var oScript = document.createElement('script');
        oScript.src = 'getData.php?callback=fn1';
        document.body.appendChild(oScript);
        
    }
    
    var oBtn2 = document.getElementById('btn2');
    
    oBtn2.onclick = function() {
        
        var oScript = document.createElement('script');
        oScript.src = 'getData.php?t=str&callback=fn2';
        document.body.appendChild(oScript);
        
    }
    
    var oBtn3 = document.getElementById('btn3');
    
    oBtn3.onclick = function() {
        
        var oScript = document.createElement('script');
        oScript.src = 'getData.php?callback=fn3';
        document.body.appendChild(oScript);
        
    }
    
}
</script>
</head>

<body>
    <input type="button" id="btn1" value="加載數(shù)字" />
    <ul id="ul1"></ul>
    <input type="button" id="btn2" value="加載字母" />
    <ul id="ul2"></ul>
    <input type="button" id="btn3" value="加載字母" />
    <ul id="ul3"></ul>
</body>
</html>

-----------------PHP文件-----------------

<?php
$t = isset($_GET['t']) ? $_GET['t'] : 'num';
$callback = isset($_GET['callback']) ? $_GET['callback'] : 'fn1';

$arr1 = array('111111','22222222','33333333','4444444','555555555555555555555');
$arr2 = array('aaaaaaaaaaaa','bbbbbbbb','cccccccccccc','ddddddddd','eeeeeeeeeeee');

if ($t == 'num') {
    $data = json_encode($arr1);
} else {
    $data = json_encode($arr2);
}

echo $callback.'('.$data.');';
回答
編輯回答
淺時(shí)光

簡(jiǎn)化下問(wèn)題就是如下代碼段:
fn2函數(shù)因?yàn)樵趏nload函數(shù)中定義,此作用域在onload函數(shù)內(nèi),出了這個(gè)函數(shù)就不能被訪問(wèn)到
fn1函數(shù)定義在全局作用域下,可以被全局訪問(wèn)

    <script>
        function fn1(){
            console.log("fn1");
        }
    </script>
    <script>
        window.onload=function(){
            console.log("~~onload~~");
            fn1();

            function fn2(){
                console.log("fn2")
            }
        }
    </script>
    <script>
        fn2();//Uncaught ReferenceError: fn2 is not defined
    </script>
2017年10月29日 23:40