Javascript学习第一季 二

作者:cssrain 来源:无忧脚本 时间:2008-06-24 18:20:00 

上篇文章讲了js中的一些概念(词法结构) 和 数据类型(部分)。

这章我们 继续.然后了解下js中操作数据 和 函数的 作用域。

1,对象跟基本类型之间的转换:

不管何时,只是对象非空,在布尔环境中都为true.
如;

new Boolean(false); 
new Number(0);
new String(“”);
new Array();

上面虽然内部值是false,但对象的值是true;
Object  valueOf()  toString()
其中Date类,是先执行toString()转换。

2,js中操作一个数据值:

任何语言都有自己的操作数据的方法;

Js也不例外,js有3种重要的方式来操作一个数据值。
1)    复制它。例如把它赋给一个新的变量。
2)    把它作为参数传递给一个函数或方法。
3)    可以和其他值比较大小。

Js通过传值和传址2种方式操作这些数据的值。

从名称可以看处,传值 是通过传递值来操作数据。在赋值的过程中,对实际的值进行了拷贝,存储到一个新的变量中。拷贝的值和原来的值是2份完全独立的值。所以如果你改变了拷贝的值,并不会影响原来的值。当比较大小时候,通常进行琢个字节比较。

传址 从名字来看,就是通过传递地址来操作数据。在赋值的过程中,对实际的值的地址(可以说是引用)进行了拷贝,他们不是完全的独立,所以如果你通过引用改变了值,那么原始的值也会改变。当比较大小的时候,通常是看他们是否引用同一个地址来比较。
简单的传址例子:

var a = new Date();
alert(a.getDate());
var b = a ;
b.setDate(21);
alert(a.getDate()) // 输出21 

3,一般来说:基本数据类型通过传值来操作的。

(如果忘记了哪些是基本数据类型,可以往回看。)

对象数据类型通过传址来操作的。(比如 数组和函数)
例子:

<script>
//传值
a=1;
b=a;
b=2;
alert(a); //输出 1

//传址
x=[1,2];
y=x;  // 赋给y的只是x的一个引用,而不是x本身。数组已经在语句中被赋值了,执行过这段代码后,仍旧只有一个数组对象,只不过我们有2个对他的引用了。
y[0]=2;
alert(x[0] +" | " +x[1]);  //输出 2  |  2
</script>

其中我们必须注意字符串:

js中字符串是通过传址来复制和传递的,而他们是通过传值来比较的。

对象和数组是用传值来传递的,只不过传递的这个值实际是一个引用,而不是对象本身。
总结:
类型    复制    传递    比较
数字    传值    传值    传值
布尔    传值    传值    传值
字符串    不可变    不可变    传值
对象    传址    传址    传址
不可变:在JS中,没有方法去改变字符串值的内容。
对字符串来说,传值还是传址,意义不大。

4,垃圾收集机制:

Js中自动释放内存。
比如:

var  s  =”heelo”;
var  b   = s.toUpperCase();
s=b; //运行到这里后,js会自动检测不再使用某个对象,因为s=b了,所以js会自动释放字符串“heelo”所占的存储空间。即我们不能再获取原始的 “heelo” 值;.

5 , javascript变量:

Js是非类型的。它的变量可以放任何类型的值。

变量的声明:
var  a  ;
var  b  ;
或者
var  a , b ;
或者
var  a=0 , b=1 ;

重复声明 是合法的,如果 遗漏声明 , js会隐式的声明该变量。当然隐式声明的变量总是全局变量。

标签:函数,javascript,学习
0
投稿

猜你喜欢

  • python分析nignx访问日志脚本分享

    2021-05-22 14:55:14
  • python3.7调试的实例方法

    2022-09-22 17:16:24
  • Django Channel实时推送与聊天的示例代码

    2021-08-14 13:33:58
  • 快速掌握ASP+Access数据库的18条安全法则

    2008-11-28 15:08:00
  • python_tkinter事件类型详情

    2021-11-29 10:09:30
  • 数据安全之MySQL安全的二十三条军规

    2008-12-24 16:26:00
  • Python如何实现的二分查找算法

    2021-10-22 18:39:30
  • Python3 文章标题关键字提取的例子

    2022-02-08 03:45:32
  • Matplotlib 3D 绘制小红花原理

    2022-11-23 11:53:08
  • 二级下拉菜单代码

    2008-11-01 18:18:00
  • python-httpx的具体使用

    2023-08-12 00:25:53
  • MySQL锁等待与死锁问题分析

    2024-01-14 01:49:36
  • Jquery AJAX POST与GET之间的区别

    2024-04-29 13:58:32
  • pycharm内无法import已安装的模块问题解决

    2021-08-28 08:53:17
  • Python产生一个数值范围内的不重复的随机数的实现方法

    2023-09-19 21:48:09
  • php生成与读取excel文件

    2023-11-15 06:17:48
  • WEB2.0网页制作标准教程(4)如何调用css样式表

    2007-11-13 13:26:00
  • RSS2.0规范中文版

    2008-06-25 13:53:00
  • PyQt 线程类 QThread使用详解

    2021-09-18 05:51:37
  • 解决python xx.py文件点击完之后一闪而过的问题

    2022-10-27 07:23:17
  • asp之家 网络编程 m.aspxhome.com