JS函数的介绍

函数:

1、变量
JS中的变量和Python不一样,它是区分基本类型值和引用类型值,像Undefined,Null,Boolean,Number,String都是基本数据类型,即简单的数据段’引用类型值指的是由多个值构成的对象。

2、参数传递方式 这个是和Python最大的不同了,Python中所有都是按引用传递,而JS都是按值传递,为了说明他们的区别,把两个都说一下。

按引用传递:

>>> a=[1,2]
>>> def test(a):
    a.append(3)
    a=[2,3]

>>> test(a)
>>> a
[1, 2, 3]

上述例子因为传递的是引用,所以函数中进行添加,全局变量a的值也变了。这里必须得解释一下,有人说Python也可以按值传入,因为当传输整数或者字符串时,变量a不变,就如下面这样:

 def test_yin(x):
    x=1

>>> x=2
>>> test_yin(x)
>>>> x
2

这里x没有改变,是因为对象2是不可变对象,你改变它是创建了一个新的对象,并没有影响旧对象,python中不可变的对象还有元祖。

按值传递:

按值传递比较好理解,意思就是只把数值传递到函数中,和外面没有半毛钱的关系,你也可以按照上面讲的传递整数值得情况理解,即只单纯地传递值。

JS中函数有一个最大的不同是它不在乎你传递多少个参数,也就是说,当你函数中有两个形参,在你调用函数时传入三个参数也不会报错,这是和其他语言最大的不同。

function Student(name) {
this.name = name
this.age = 25
}

var st = new Student('haibo','ssf')

JS自带了一个arguments,但只在函数内部使,用法:arguments.length,arguments[0]。

其余的用法和其他语言的函数也差不多相同了,这里说一下this的用法。

this是Javascript语言的一个关键字。

它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用 随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是, this指的是调用函数的那个对象。

它有四种使用方式:

1、函数调用

 var x='sfsf'
function tea() {
   alert(this.x)
}

tea()  //sfsf

这里this是全局变量

2、作为对象方法引用

function tea() {
alert(this.name)
}

var x={}
x.name='hai'
x.m = tea

3、作为构造函数用

构造函数,就是通过这个函数生成一个新对象(object)。这时,this就指这个新对象。

var name='as'
function tea() {
   this.name='dsf'
}

var n = new tea()
alert(n.name)
alert(name)

这里this是局部变量n.name和name是不相同的。

4、apply

apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数。

var name='d'

function tea() {
   alert(this.name)
}

var n = {};
n.name='hai';
n.m = tea();
n.m.apply(n);
--------EOF---------
微信分享/微信扫码阅读