日期:2014-05-16  浏览次数:20361 次

Js中对外部js文件的引用顺序直接影响到未定义的问题

一、在HTML中嵌入Javasript的方法
  直接在Javascript代码放在标记对<script>和</script>之间?
  由<script />标记的src属性制定外部的js文件?
  放在事件处理程序中,比如:<p onclick="alert('我是由onclick事件执行的Javascript')">点击我</p>?
  作为URL的主体,这个URL使用特殊的Javascript:协议,比如:<a href="javascript:alert('我是由javascript:协议执行的javascript')">点击我</a>?
  利用javascript本身的document.write()方法写入新的javascript代码?
  利用Ajax异步获取javascript代码,然后执行?
  第3种和第4种方法写入的Javascript需要触发才能执行,所以除非特别设置,否则页面加载时不会执行。
  二、Javascript在页面的执行顺序
  页面上的Javascript代码是HTML文档的一部分,所以Javascript在页面装载时执行的顺序就是其引入标记<script />的出现顺序, <script />标记里面的或者通过src引入的外部JS,都是按照其语句出现的顺序执行,而且执行过程是文档装载的一部分。?
  每个脚本定义的全局变量和函数,都可以被后面执行的脚本所调用。?
  变量的调用,必须是前面已经声明,否则获取的变量值是undefined。?
  <script type="text/javscrpt">//<![CDATA[
   alert(tmp); //输出 undefined
   var tmp = 1;
   alert(tmp); //输出 1
   //]]></script>
  同一段脚本,函数定义可以出现在函数调用的后面,但是如果是分别在两段代码,且函数调用在第一段代码中,则会报函数未定义错误。?
  <script type="text/javscrpt">//<![CDATA[
   aa(); //浏览器报错
   //]]></script>
   <script type="text/javscrpt">//<![CDATA[
   aa(); //输出 1?