Uncaught ReferenceError: verifyNumber is not defined 這個錯誤該怎麽解決?

jsp文件報錯:Uncaught ReferenceError: verifyNumber is not defined
有時也會出現Uncaught SyntaxError: unexpected token: '{'
源文件如下:



```html
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="js/login.js"></script>
<link rel="shortcut icon" href="#" />
<script type="text/javascript">
$(function(){
    function verifyNumber(){
        var text = $("#email").val();
        $("#btu").css("disabled","disabled");
        $.post("verifyEmailServlet",
                {"email":text},
                function(data){alert(data);},
                "json");}
    function loginVerify(){
        var number = ${sessionScope.verifyNumber};
        if (!($("#verify").val() == number)){
            alert("驗證碼有誤!");
            return false;
        }return true;
    }});
</script>
</head>
<body>
    <form action="loginServlet" onsubmit="return loginVerify()"
        method="post">
        <input type="hidden" name="yid" value="${param.yid}"> <input
            type="hidden" id="vernumber" value="${sessionScope.verifyNumber}">
        手机号:<input type="text" name="phone"> 邮箱:<input type="text"
            name="email" id="email"><input type="button" value="发送验证码" id="btu"
            onclick="verifyNumber()"> 验证码:<input type="text"
            name="verify" id="verify"> <input type="submit" value="提交" >
    </form>

</body>
</html>


檢查后并沒發現語法錯誤,js/jquery-1.11.0.min.js之前用過,沒有問題。
現在兩個function都不能用,求大佬解惑!!

$(function)是页面加载执行的函数
你又在里面声明了个verifynumber方法,这个方法的作用域是$(function),所以你给验证码按钮绑定这个事件是不行的,在全局作用域找不到这个方法。

解决:把verifynumber方法放$(function)外面

你input 的onclick="verifyNumber()" 是在全局环境下执行的。
而你的 verifyNumber()是处于另一个$(function(){})函数局部作用域(闭包)内。在全局环境下是访问不到。
要把 verifyNumber()放到$(function(){})外面才能访问到。

利用彈框,一步一步深入function,$(function(){};中可以運行,在verifyNumber中就無彈框,無奈去掉$(function(){};發現文件恢復正常功能。但是不明白爲什麽。。。