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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值