javaScript定义函数的三种方式&变量的作用域
Posted lxjshuju
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaScript定义函数的三种方式&变量的作用域相关的知识,希望对你有一定的参考价值。
一.函数定义
方式1.普通方式定义函数
function 函数名(參数n){
函数体
}
function add(a,b){ return a+b; }方式2.直接量定义函数
var 函数名=function(參数n){
函数体
}
var add=function(a,b){ return a+b; }方式三.构造方式定义函数
var 函数名=new Function(參数n,函数体);
var add = new Function(‘a,b‘,‘return a+b;‘);二.变量的作用域:
全局变量:全局域和函数域
局部变量:局部函数域内
<script type="text/javascript"> var a="a"; function fn(){ var b="b"; alert(a); alert(b); } fn(); alert(a); alelrt(b); </script>打印结果:a,b,a我们发现最后一个alert(b)没有打印这是由于b定义在函数体内仅仅能在函数体内使用
特殊的作用域
<script type="text/javascript"> var a="a"; function fn(){ alert(a); var a="b"; alert(a); } alert(a); </script>执行结果:
undefined,b,a
代码解释:
* 解读一下代码:
* * 定义一个全局变量a,并初始化为"a".
* * 定义一个函数fn(),可是没有调用(说明函数内容的代码不运行).
* * 定义局部变量a,但不初始化.
* * 到以上代码为止,当前环境中具有几个变量?
* * 全局变量a,值为"a".
* * 局部变量a,但没值.
* * 当调用函数fn()时:
* * 打印变量a:就近原则
* * 局部变量a,没值:结果为undefined.
* * 打印变量a,局部变量a.
* * 在全局域中打印变量a:全局变量a.
*
* 结论:
* * javascript一次性定义代码段中全部的变量,但不初始化.
* * javascript中当运行到相应语句时,初始化变量.
*
* * 当全局变量与局部变量同名时:
* * 在函数域中,仅仅能訪问到局部变量a.
以上是关于javaScript定义函数的三种方式&变量的作用域的主要内容,如果未能解决你的问题,请参考以下文章