JavaScript思考之一:函数的基本概念

来源:互联网 发布:coc大本升级数据 编辑:程序博客网 时间:2024/05/18 01:27

先说点javascript中关于函数的基本概念。

为了便于理解,可复制代码片段到浏览器的控制台中执行。

1. 函数的创建方法

JS中创建一个函数有2种方式,函数定义表达式 + 声明式。如下:

定义表达式: var fun1 = function(){ var a="demo"; console.log(a) };

声明式: function fun2(){ var a="demo"; console.log(a);}

运行 fun1() 和 fun2(),都会得到相同的结果,说明两个函数基本的功能相同。


当然也可以混合着使用,但不建议,因为这相当于用两个碗吃饭,浪费。

var fun1 = function fun2(){var a="demo"; console.log(a);}


2. 声明提前

JS代码的执行是自上而下按顺序逐句执行的,这和我们做事情一样。或许你会说有人可以同时做两件事,比如说边看书边听歌。看书用的是眼睛,听歌用的是耳朵,眼睛和耳朵之于人体的作用,类似于摄像头和麦克风之于电脑,是信息输入的工具。我们看书看到的文字以及听歌听到的声音,都要交给我们的大脑处理。大脑分很多部位,如左脑右脑,不同的部位善于处理的信息不同。这点和电脑的CPU也很像。

上面有点啰嗦了。请看下面的代码。

fun3();

function fun3(){var c="demo";console.log(c);}

这个代码是可以正常执行的。

fun4();

var fun4 = function(){var d="demo"; console.log(d);}

这段是不可以执行的,会提示Uncaught TypeError : fun4 is not a function;

那么把这段代码稍作修改。

var fun5;

fun5();

fun5 = function(){var d="demo"; console.log(d);}

你会发现代码仍然不能正常执行,提示的错误和之前类似。那么为什么fun3()就可以正常执行呢?

这就是因为声明提前。JS在执行时,对于声明式创建的函数,自动会放到代码的最前面。根据《权威指南》的说法,是函数声明语句“被提前”到外部脚本或外部函数作用域的顶部,所以以这种方式声明的函数,可以被在它定义之前出现的代码所调用。

原创粉丝点击