首页 > 语言 > JavaScript > 正文

JavaScript高级程序设计(第3版)学习笔记7 js函数(上)

2024-05-06 14:21:05
字体:
来源:转载
供稿:网友
变量类型

  在说函数之前,先来说说变量类型。

1、变量:变量在本质上就是命名的内存空间。

2、变量的数据类型:就是指变量可以存储的值的数据类型,比如Number类型、Boolean类型、Object类型等,在ECMAScript中,变量的数据类型是动态的,可以在运行时改变变量的数据类型。

3、变量类型:是指变量本身的类型,在ECMAScript中,变量类型就只有两种:值类型和引用类型。当变量的数据类型是简单数据类型时,变量类型就是值类型,当变量的数据类型是对象类型时,变量类型就是引用类型。在不引起歧义的情况下,也可以称变量的数据类型为变量类型。

  那么,值类型和引用类型有什么区别呢?最主要的一个,就是当变量类型为值类型时,变量存储的就是变量值本身,而当变量类型为引用类型时,变量存储的并不是变量值,而只是一个指向变量值的指针,访问引用类型的变量值时,首先是取到这个指针,然后是根据这个指针去获取变量值。如果将一个引用类型的变量值赋给另一个变量,最终结果是这两个变量同时指向了一个变量值,修改其中一个会同时修改到另一个:
代码如下:
var a = {
name:'linjisong',
age:29
};
var b = a;//将引用类型的变量a赋给变量b,a、b同时指向了a开始指向的那个对象
b.name = 'oulinhai';//修改b指向的对象,也就是修改了a指向的对象
console.info(a.name);//oulinhai
b = {//将变量重新赋值,但是b原来指向的对象没有变更,也就是a指向的对象没有变化
name:'hujinxing',
age:23
};
console.info(a.name);//oulinhai

好了,关于变量类型先说到这,如果再继续到内存存储数据结构的话,就怕沉得下去浮不上来。

函数

  如果说对象是房间,那么函数就是有魔幻效应的房间了。函数首先是对象,然后这个函数对象还具有很多魔幻功能……

1、函数

(1)函数是对象

  函数也是一种对象,而用于创建函数对象实例的函数就是内置的Function()函数(创建对象实例需要函数,而函数又是一种对象实例,是不是让你有了先有鸡还是先有蛋的困惑?别钻牛角尖了,只要鸡能生蛋,蛋能孵鸡就行了,谁先谁后还是留给哲学家吧),但是函数这种对象,又和一般的对象有着极大的不同,以至于对函数对象实例使用typeof时返回的不是object而是function了。

(2)函数名是指向函数对象的引用类型变量
代码如下:
function fn(p){
console.info(p);
}
console.info(fn);//fn(p),可以将fn作为一般变量来访问
var b = fn;
b('function');//function,可以对b使用函数调用,说明b指向的对象(也就是原来fn指向的对象)是一个函数
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选