新人笔记13

函数的组成

(1) 函数名
(2) 参数
(3) 函数体:函数的功能,一般会有返回值,返回值就是结果

案例:判断一个数是否为素数(函数方法)

函数名:isPrime
参数: n

新人笔记13

参数传递

参数传递,就是将实参的值传给形参。通过调试我们可以看键,形参在函数
被调用之前是不存在的,当函数被调用的那一刻起,实参被创建,并且传递给
形参
参数传递有两种方式:值传递与引用传递

值传递
新人笔记13

A的值并没有显示预期中的6,还是5,这是因为形参x与实参a是两个不同的
变量,x的变化与a没有任何的关系
引用传递
新人笔记13

a. value没有被显示修改,但是a.value确实加了1,因为x就是a,或者说
x是a的别名 专业一点就叫引用
常规类型的参数采用的是值传递,比如Number,String,Boolean
对象类型采用的是引用传递,Object

案例:验证100以内的数都符合角谷定理(函数方法)

角谷定理:对于一个大于1的整数n,如果n是偶数,则n = n / 2。如果n是奇数,
则n = 3 * n +1。反复操作后,n一定为1。

新人笔记13

变量作用域

局部变量,就是在函数内部定义的变量,这个变量只能在函数内部使用,在
全局中不能使用,举个例子,三国时期,把曹操,刘备,孙权比喻成三个函数
那么曹操手下的将领是不会听刘备与孙权的命令的,刘备与孙权同理,他们手下
的兵只会听从自己老大的命令
新人笔记13

在函数的内部定义一个变量,如果没有加上var,那么这个变量就会被认为是
全局变量
新人笔记13

全局变量:在函数外部定义的变量,这个变量可以在全局进行使用。
举个例子:汉朝的皇帝发布命令,那么不管是曹操还是刘备或者孙权,都要
听皇帝的命令
新人笔记13

冲突处理:就近原则
当函数中定义了一个与全局变量名字相同的变量,此时函数在定义前使用,
那么这个变量还是函数中的变量,(没给值)是underfind,不会使用全局变量
新人笔记13

局部和全局同时定义了一个相同名字的变量时如何在局部变量里面访问全局变量
在局部给变量加一个window的前缀,据可以访问到全局的变量

新人笔记13