JavaScript--Function, Variable作用域
来源:互联网 发布:网络信息与安全报告 编辑:程序博客网 时间:2024/06/06 16:47
一、在执行JavaScript语句前,首先将所有的declaration都提到其所在scope的顶部(注意:只提取declaration,不提取initialization)
也就是说,解释器在执行某个函数或者initialize某个变量前,首先将这些内容提取到其所在scope的顶部
Demo function定义:
<html><head><script type="text/javascript">varFunction("第一次调用");//第一次调用var varBefore = "I'm varBefore";varFunction("第二次调用");//第二次调用function varFunction(invokeSeq){alert(invokeSeq+": varBefore=" + varBefore);alert(invokeSeq+": varEnd=" + varEnd);alert(invokeSeq+": varMiddle=" + varMiddle);alert(invokeSeq+": varFunction=" + varFunction); return 1;}varFunction("第三次调用");//第三次调用var varMiddle = "I'm varMiddle";varFunction("第四次调用");//第四次调用var varEnd = "I'm varEnd";varFunction("第五次调用");//第五次调用</script></head><body onload="message()"></body></html>
Demo variable定义:
<html><head><script type="text/javascript">var varBefore;function varFunction(invokeSeq){alert(invokeSeq+": varBefore=" + varBefore);alert(invokeSeq+": varEnd=" + varEnd);alert(invokeSeq+": varMiddle=" + varMiddle);alert(invokeSeq+": varFunction=" + varFunction); return 1;}var varMiddle;var varEnd;varFunction("第一次调用");//第一次调用varBefore = "I'm varBefore";varFunction("第二次调用");//第二次调用varFunction("第三次调用");//第三次调用varMiddle = "I'm varMiddle";varFunction("第四次调用");//第四次调用varEnd = "I'm varEnd";varFunction("第五次调用");//第五次调用</script></head><body onload="message()"></body></html>
二、如果函数定义和变量定义重名
Variable initialiazation> Function declaration> Variable declaration
Demo function and variable定义:
<html><head><script type="text/javascript">alert(typeof value);// function. (Function declaration > Variable declaration)alert(value);// function content. (Function declaration > Variable declaration)alert(value());// 1// Both function and variable declaration will be hoisted to the top// of containing scope before javascript intepreter executes any codevar value;function value(){ return 1;}value = 10000;alert(typeof value);//number. (Variable initialization > Function declaration)alert(value);// 10000. (Variable initialization > Function declaration)alert(value());// Error. Because value is a variable, not a function any longer</script></head><body onload="message()"></body></html>
问题:
如果 html 中,有多个 <script type="text/javascript"></script>,那么,这些<script></script>中的functioin, variable之间有关系吗?可以相互覆盖嘛?
- JavaScript--Function, Variable作用域
- javascript函数作用域和变量声明提前(variable hoisting)
- JavaScript变量作用域和变量提升解释(JavaScript Variable Scope and Hoisting Explained)
- JavaScript变量作用域和变量提升解释(JavaScript Variable Scope and Hoisting Explained)
- [从jQuery看JavaScript]-变量与作用域链(Variable and Scope Chain)
- [从jQuery看JavaScript]-变量与作用域链(Variable and Scope Chain)
- 变量作用域(Variable Scope)
- static variable function
- variable argument print function
- static variable/function
- static function and variable
- javascript之函数作用域和闭包[function scope and closure]
- [JavaScript] Script 中 function, variable 的定义会提升到函数执行前面;但是,function 中定义的 global variable 则不会被提升
- intermediate javascript: assign a function with its parameter to a variable and execute later
- JavaScript 中在 function() {} 前面加感叹号的作用
- javascript (function(){})()什么意思?有什么作用?匿名函数?
- undefined function or variable 'matlabrc'
- Undefined function or variable 'caffe_'
- 局域网电脑共享的问题
- 使用ajaxpro.2.dll
- html、xhtml、shtml三者关系和区别
- 带你全面了解ARP协议
- biaoti
- JavaScript--Function, Variable作用域
- BPM企业应用之Agentflow解决方案简介
- AIDL简单入门--摘自《AndroidOPhone开发完全讲义源码》
- 国内外外免费期刊全文数据库
- Android 源码编译:资源树下,将drawable-*等文件编译到.apk里
- 视图和窗口架构
- RThread.Rendezvous()是做什么用的?
- const,define,static,$GLOBALS,final关键字解释
- oracle的sqlnet.ora , tnsnames.ora , Listener.ora 文件的作用