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);
微信分享/微信扫码阅读