getting-started-with-javascript
getting-started-with-javascript copied to clipboard
做菜流程:流程控制函数里的一个疑问?
高阳老师好,我在试验改做菜流程的代码后,有一个地方不是很明白,
流程控制函数startWorkFlow()
里的var labour2 = prepare();
,其prepare();
不就是下面这个输出吗?:
劳动最光荣
['磨刀', '洗碗', '打扫']
好奇var labour2 = prepare();
为什么最后只会输出劳动最光荣
呢?
然而在增加了console.log('准备' + labour2)
后,才出现了磨刀,洗碗,打扫
的字样。
代码如下:
// 做准备工作的函数
function prepare() {
console.log('劳动最光荣');
var labour = ['磨刀', '洗碗', '打扫'];
return labour;
}
// 采购食物的函数
function buyFoods() {
console.log('采购原料和菜');
var foodsList = ['fish', 'egg', 'meat'];
return foodsList;
}
// 做菜的函数
//
function cooking(foodsList) {
console.log('今天要做这些菜:' + foodsList);
console.log('大工告成,上菜');
var feast = ['鸡蛋西红柿', '红烧肉', '红烧鱼'];
return feast;
}
// 流程控制函数
function startWorkFlow() {
var labour2 = prepare();
if (labour2) {
console.log('准备' + labour2)
var foodsList2 = buyFoods();
var feast2 = cooking(foodsList2);
for (var i = 0; i < feast2.length; i++) {
console.log(feast2[i]);
}
console.log('----酒席准备好了----');
} else {
console.log('还没准备好');
}
}
// 干活啦~~
startWorkFlow();
终端输出如下:
劳动最光荣
准备磨刀,洗碗,打扫
采购原料和菜
今天要做这些菜:fish,egg,meat
大工告成,上菜
鸡蛋西红柿
红烧肉
红烧鱼
----酒席准备好了----
这位同学,看来你不是很明白代码的含义。
console.log('劳动最光荣');
var labour = ['磨刀', '洗碗', '打扫'];
上面是你写的代码,其中第一行的 console.log()
函数,就是用来输出括号里的内容。你的括号里只有 劳动最光荣
这五个字,程序怎么可能再多输出别的东西呢?
代码是被编译器一行一行的的解读的,最后你调用startWorkFlow()函数,编译器就会从这个函数的开头一行行解析。
var labour2 = prepare(),这句代码接收了一个函数的返回值,但是并没有进行输入:console.log操作,必然不会把接收到的值进行输出操作的