clearwater 发表于 2020-2-17 15:53

JS基础: 函数的调用

本帖最后由 clearwater 于 2020-2-17 16:10 编辑

请不要来回复一些对楼主没有帮助的水帖。--例:路过,感谢分享,帮顶等之类。

我在跟着某前端视频学习。函数是如何调用,我基本上看明白了,也知道用法了。

我不太清楚的地方是:见视频截图
被调用的函数 (fn 2,在17-20行),如果写在调动用函数的代码(fn1, -11行)后面也没关系吗? 只要代码里有fn2的封装函数,不论在哪,程序都能把它找出来?

(如果我写,我会把函数fn 2, 写在最前面; 函数fn1 写在中间; 最后再15行)








魔幻冰扬 发表于 2020-2-17 16:05

函数的两种定义方法
1.函数声明
function a(){}
2.函数表达式
var b = function(){}

函数声明的,如果放全局,可以在任何地方调用,不管上下。原理:自行搜索【函数提升】
函数表达式的,调用的时候,只能放下面。原理:它和定义变量一样。比如:var c = 2.想用c,只能在它下面用

linguo2625469 发表于 2020-2-17 16:10

首先函数提升程序运行时会把所有变量或者函数提升(此时未执行函数内的方法或者赋值等一系列操作
然后程序自上而下执行 ,当读到第13行fn2(),会去第17行执行fn2()内的函数

clearwater 发表于 2020-2-17 16:01

linmengqun 发表于 2020-2-17 15:58
支持一下
大哥,别来水帖。我的主帖第一行就说明了。您连看主帖都不看,在这里浪费时间,那您注册这个账号有啥用?

我需要用回答问题来支持。

别的支持不需要。

蜂窝煤 发表于 2020-2-17 16:02

1+x讲过这个问题,好像是只能在后面,我记不太清了。。。我去找找

樱染落霞红 发表于 2020-2-17 16:04

好,只能说你还没有弄懂面向对象的含义。你的说法是面向过程的逻辑,程序运行时会把每一个函数看成一个对象,第一个函数调用时程序会把第二个函数的对象实例化,在进行运算。
面向对象啊!

clearwater 发表于 2020-2-17 16:08

魔幻冰扬 发表于 2020-2-17 16:05
函数的两种定义方法
1.函数声明
function a(){}

非常感谢您的帮助。说得很清楚。

也感谢楼主各位回答的大神。

PPZ丿皮皮智 发表于 2020-2-17 16:10

代码会有一段预读取的过程,他会先在GO(global object)里面先预读取好了两个fn函数然后在执行代码的。所以放后面也是没问题的。我最近也在学js推荐你一个教程哈https://ke.qq.com/course/231577?taid=2237351543933081
解决的话请给个评分哈

clearwater 发表于 2020-2-18 08:12

原来我的问题又叫预解析或提升。

我昨天看到的视频之后产生疑惑,然后在之后第10个视频中,视频老师清清楚楚地解释清楚辣。老师说,这个问题是面试中常提问到的。

我忍不住夸自己一下,善于提问。

;www

页: [1]
查看完整版本: JS基础: 函数的调用