js中函数深入理解1

学习编程几年了,c,c++,java都有涉猎,这几种编程语言页比较类似,但是自从看了js后,简直毁三观啊。尤其是其中的函数,这几天搞了本js权威指南,准备好好研究一下这其中的奥妙,其中有错的希望大佬指点。


1*  首先,js中定义的函数,并不是像c语言一样,在执行时按照循序解析代码,js在编译时,就会解析并且存储函数的主体语句,然后定义一个和该函数同名的属性(如果函数

定义在其他函数中,那么就在调用对象中定义这个属性,否则就是在全局对象中定义这个属性),这里需要注意两点:1 js中的函数名不能和变量名相同,应为函数将被解析为

一个和他同名的全局属性,再定义和起相同的变量会把这个属性覆盖掉。 2 js中的函数定义不需要写在函数调用的前面,因为函数早在js代码执行前就已经被解析了。


2:js函数在没有return返回的时候,自动返回一个undefined。


3*:js函数并不会检测传递的数据是不是那个函数要就的类型,如果参数类型很重要,可以用typeof对他经行检测。而且js函数调用时也并不会管传入的参数和函数应该传入的

参数个数是否匹配。如果传入的多了,后面的参数自动被忽略,如果传入少了,不足的参数用undefined补全。


4:嵌套的函数,函数在定义在另一个函数中,如果在这个函数外面调用嵌套函数,将会出错。


5*:和c和java不同,js中函数是一种数据类型,可以被存储在变量中(var f= function(x){return x*x;}相当于定义了一个f(x)函数),这中函数类型,叫做函数直接量。虽然语法定

义函数直接量是未命名函数,但也可以为他指定函数名,这对于编写调用自身的递归函数非常有利。这里还有一个匿名函数直接调用的知识点,如果函数直接量被小括号括起

来,然后再在后面添加一个带有参数的括号,匿名函数就会直接运行。console.log((function(x){return x;})(10));输出10。


6:可选参数,利用js函数的宽松性,在函数中添加例如(if(!a) a=[ ]),这样当没有传入a这个参数的时候,函数也能正常运行,这就实现了类似c++中重载的功能,a这个参数也

就成了一个可选参数。


其他的以后再写,不知道为什么继续写排版总是出错。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值