服务范围 ============= 1:logo制作,div+css,切图兼容主流浏览器,网页错位,css兼容,图片处理。 2:js特效,js问题,功能开发.AJAX无刷新数据。 3:网站搬家,数据access,mysql,msql。 4:ASP程序开发,aspcms,zblog,科讯等CMS建站,ASP程序二次开发 5:PHP程序开发,WP模板插件开发,ECSHOP二次开发建站,dedecms建站,GXcms,DZ论坛等 6:net开发 只接定制开发或二次开发! 7:及时,高效,真诚。信誉保证(A5有80多笔交易记录,点击我的ID帐号可以查看),价格实在,欢迎惠顾! QQ:536272015 电话:15902018028 老刘技术

使用数据类型注意的地方

1):数字: 由于数字有什么8进制,10进制,16进制等。。。 八进制:var num = 011; //以"0"开头 十六进制:var num =0x1f; //以"0x"开头 所以对于js这个都能识别的语言来说,就必须得注意。

alert(377);   // 377  alert(0377);    //255   =  3 * 64 + 7 * 8  + 7 * 1

进行算术运算有个重要的对象:Math.

具体可以去网上下载手册,查询里面的方法。

2个有用的函数:isNaN()和isFinite()

isNaN() : 用于检查其参数是否是非数字值。// 提示:是非数字哦。(not a number)

document.write(isNaN(0) )  //返回false  document.write(isNaN(5-2) ) //返回false  document.write(isNaN ("Hello") ) //返回true

isFinite(number) 函数用于检查其参数是否是无穷大。

如果number是有限的,则返回true. 如果 number 是 NaN(非数字)或者是无穷大,则返回false;

2):字符: ‘you’re right’; 这样写的话js会误以为 在you字母后就结束了,引起错误。 所以当遇到这种情况的时候,必须用到转义。 我们可以这么写: ‘you\’re right’; 另外:你可以 google.com搜索 转义序列表 。
字符串的简单操作例子:

var a = "cssrain";  var b = a.charAt(a.length-1); // 从字符串a中截取最后一个字符。  输出:n  var c = a.substring(0 , 2);  // 从字符串a中截取第1,2个字符。 输出:cs  var d = a.indexOf('s');   // 从字符串a中查找第一个s出现的位置。 输出:1  

从例子可以看出,基数都是从0开始的。

var e = a.substring( a.length-1 ); //可以看出,substring第2个参数不写的话,  //默认 是到最后。  var f = a.substring( a.length-1 , a.length);//等价于

3):数字跟字符之间的转换:

数字转字符:

var number_to_string = number + “ ”; //方法1:添加一个空的字符串。  var number_to_string =String(number); //方法2:使用String()函数。  var number_to_string =number. toString(); //方法3:使用toString()函数。

注:toString()方法默认是以10进制转换。

如果要使用8进制转换可以 这么写: number. toString(8);

字符转数字:

var string_to_number = string – 0 ; //方法1: 字符串减去0。  var string_to_number = Number(string) ; //方法2:使用Number ()函数。  var string_to_number = parseInt(string) ; //方法3:使用parseInt ()函数。

方法1中不能 用string+0 ; 这样会导致字符串拼接,而不是类型转换。

方法2 中的Number函数转换,比较严格。

比如:

var a = "19cssrain86";  var b = Number(a);  //输出NaN.

如果我们使用方法3。

var c = parseInt(a); //输出 19

可以看出parseInt()会自动忽略非数字的部分。 parseInt()只取整数部分,忽略小数部分。 parseFloat()会把小数部分也取到。 和toString()一样,parseInt也有进制,默认是10进制。 如果想使用8进制,可以这么写:

parseInt( “077” , 8 ); // 输出63 = 7 * 8 + 7

当字符以0开头的时候,我们必须把 第二个参数 指明,不然js可能会以8进制去转换。

4):布尔类型: 布尔在数字环境中:true  转换为  1  ,false  转换为  0  。 在字符环境中:true  转换为  “true”  ,false  转换为  “false”  。 布尔转换:

var x_to_Boolean = Boolean(x); //方法1:使用Boolean ()函数。  var x_to_Boolean = !x; //方法2:使用 感叹号。

5):函数的定义:

方法1:普通定义

function square(x){        return x*x;  }

方法2:函数直接量定义

var square = function(x){  return x*x; }   //推荐使用

方法3:构造参数

var square = new Function(“x”,”return x*x;”);   //效率低

6):对象:

如果有一个名为 cssrain 的对象 , 他有一个高度height的属性。 那么我们可以这么引用: cssrain.height; 还可以使用关联数组定义:cssrain[“height”];
创建对象:

方法1:

var point = new Object();  point.x = 3;  point.y = 5;

方法2:使用对象直接量

var point = {x:3 , y:5 }

当然json也可以咯。

对象在字符的环境下,会调用toString()方法。数字环境下,会调用valueOf()方法。布尔环境下,非空对象为true;

7):数组:

常规数组:以非负整数做为下标。image[0] 关联数组:以字符做为下标。如:image[“width”] js不支持多维数组,但数组里面可以嵌套数组。
创建数组:

方法1:

var a = new Array();  a[0] = “1”;  a[1] = 2;  a[2] = { x:1, y:3};

方法2:

var  a  =  new Array(“1” , 2 , {x:1,y:3} );

注意下:如果只传了一个参数;比如

var a = new Array(3);

那么它是表示:3个未定义元素 的 新数组。

方法3:使用数组直接量

var  a =[“1” ,  2 , {x:1 , y :3 }]; //注意外面的 括号  ,  不是花 括号。

8):null和undefined: null表示无值; undefined : 使用一个并未声明的变量,或者使用了已经声明的变量但未赋值或者使用了一个并不存在的属性。 undefined==null 如果要区分: 可以使用===  或者typeof运算符。

 

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

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

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

 

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中,没有方法去改变字符串值的内容。 对字符串来说,传值还是传址,意义不大。

 

posted @ 2013-08-26 04:36  未来在手中  阅读(213)  评论(0)    收藏  举报
服务范围 ============= 1:logo制作,div+css,切图兼容主流浏览器,网页错位,css兼容,图片处理。 2:js特效,js问题,功能开发.AJAX无刷新数据。 3:网站搬家,数据access,mysql,msql。 4:ASP程序开发,aspcms,zblog,科讯等CMS建站,ASP程序二次开发 5:PHP程序开发,WP模板插件开发,ECSHOP二次开发建站,dedecms建站,GXcms,DZ论坛等 6:net开发 只接定制开发或二次开发! 7:及时,高效,真诚。信誉保证(A5有80多笔交易记录,点击我的ID帐号可以查看),价格实在,欢迎惠顾! QQ:536272015 电话:15902018028 老刘技术