JavaScript基本概念(变量 数据类型)

来源:互联网 发布:打印机显示网络 编辑:程序博客网 时间:2024/06/07 07:42

typeof Number() parseInt() toString()

1.变量

ECMAScript中的变量是松散类型的,所谓的松散类型就是可以用来保存任何类型的数据。换句话说,每个变量仅仅是一个用于包村值的占位符而已

  • 格式:
var result//result可以用来保存任何类型的值比如字符串、数字等。//像这样没有初始化的会保存一个特殊的值--undefined
  • 初始化
var result=20;//变量result中保存一个数值20,但是!!!像这样初始化变量并不会把它标记为数字类型,如下:resul="true";//我们又可以用保存一个字符串而取代原来的数字。虽有效但不推荐
  • 注意
    用var 操作符定义的变量将成为该变量作用域中的局部变量,也就是说,如果在函数中用var定义一个变量,那么该变量就是在这个函数作用域里面的局部变量,一旦这个变量在函数退出就会被撤销
function test(){    var result =20;}test();alert(result);//错误!!!//result是局部变量,函数被调用时创建该变量并赋值,但之后它就被撤销,在下一行代码中调用这个已经不存在的变量就会出错。
function test(){    result =20;}test();alert(result);//20//省略var操作符,那么result就是全局变量,这样函数被调用之后,变量就有了定义,也就可以在函数外部访问这个存在的变量了

2.数据类型

5种简单(基本)数据类型:Undefined、Null、Boolean、Number和String
1种复杂数据类型:Object,本质是由一组无序名值对组成

typeof操作符
由于ECMAScript是松散类型,因此需要一种手段来检测给定变量的数值类型。对于一个值使用typeof操作符可能返回下列的字符串
“undefined”–如果这个值未定义
“bollean”–如果这个值是布尔型
“string”–如果这个值是字符串
“number”–如果这个值是数值
“object”–如果这个值是对象或null
“function”–如果这个值是函数
var message="hello";
alert(typeof message);//string,它是操作符不是函数,括号不是必需的
alert(typeof (message);//string
alert(typeof 95);

  • Undefined类型
    取值:只有一个即特殊的underfined,
var message;alert(message==undefined);//true//使用var声明变量但未初始化时它的值就是underfined
var message;//下面这个变量没有声明//var name;alert(message==undefined);//true,使用var声明变量但未初始化时它的值就是underfinedalert(name);//没有声明出错alert(typeof message);//undefinedalert(typeof name);//undefined,没有声明但可以typeof检测其数据类型
  • Null类型
    取值:只有一个即特殊的null
    从逻辑上来看,null值表示的是一个空对象指针,而这也是为什么使用typeof操作符检测null值时会返回”object”的原因。
var person=null;alert(typeof person);//"object"//如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其他值。//这样以来只要检查null值就知道相应的变量是否已经保存了一个对象的引用,如下:if(car!=null){    //若car已经保存了一个对象名字    //就对car对象执行某些操作}
  • Boolean类型
    取值: true和false(区分大小写,True和False都不是Boolean值)
    注意: 这两个值和数字值不是一回事,因此true不一定等于1,false也不一定等于0
    可以对任何数据类型调用Boolean()函数,而且总会返回一个Boolean值
var message="hello world";if(message){    alert("value is true");}//message会自动转换成Boolean值(true),所以会显示一个警告框
  • Number类型
    (1) 用于表示整数和浮点数值
//除了可以表示十进制,整数还可以通过八进制和十六进制表示var num1=10;var num2=070;//十进制的56var num3=089;//无效的八进制,被解析为89var num4=0xa//十进制的10var num5=1.2;//由于浮点数值内存空间是整数两倍,下面这些浮点数会自动转换为整数var num6=10.0;//解析为整数10var num7=1.;//解析为整数1//科学计数法var num8=3.125e7;//等于31250000

浮点数的最高精度是17位小数,但算术计算时精度远不如整数,例如0.1+0.2的结果不是0.3,而是0.30000000000000004,所以永远不要做一下这样的测试:

if(a+b==0.3){    alert("result=0.3");//如果时0.05和0.25那没什么问题,但如果是0.1和0.2,那么测试不通过}

(2)NaN

即Not a Number,它是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作符未返回数值的情况
(在ECMAScript中,任何数值除以非数值会返回NaN)

它有两个特点
1.任何涉及NaN的操作(例如NaN/10)都会返回NaN;
2.NaN与任何值都不相等

针对NaN的两个特点,ECMAScript定义了isNaN()函数。收到一个值之后会尝试将它转换为数值,某些不是数值的会直接转换为数值。

alert (isNaN(NaN));//truealert (isNaN(10));//falsealert (isNaN("blue"));//true

(3)数值转换

有3个函数:Number()、parseInt()和parseFloat()
Number()可以用于任何数据类型,而parseInt()和parseFloat()专门用于把字符串转换成数值。

var num1=Number("hello");//NaNvar num2=Number("011");//11var num3=Number(" ");//0var num4=Number(true);//1Var num5=Number(null);//0var num6=Number(undefined);//NaN
//由于Number()在转换字符串的时候比较复杂且不是很合理,一次字符串转换一般用 var num1=parseInt("1234blue");//1234 var num2=praseInt(" ");//NaN var num3=parseInt("0xA");//十进制10 var num4=parseInt(22.5);//22 //为了消除解析八进制时的分歧,可以给它指定第二个参数:转换时的基数 var num1=parseInt("0xAF", 16);//175 var num2=pareseInt("AF");//NaN var num3=parseInt("10", 2);//2 按二进制解析 var num4=parseInt("10", 8);//8 按八进制解析
//praseFloat()会忽略前导0,只解析十进制var num1=praseFloat("0xA");//0var num2=praseFloat("0908");//908var num3=praseFloat(1234A");//1234
  • String类型
    即字符串,可以由双引号或单引号表示,因此下面这两种都是有效的
var firstName="Nicholas";vaar lastNam='James';

(1)字符串的特点
不可变。也就是一旦创建,它们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用包含新值的字符串填充该变量。

var one="java";one=one+"script";

(2)转换为字符串
第一种是几乎每个值都有的toString()方法。但是null和undefined没有这个方法。

var age=11;var ageToString=age.toString();//字符串"11"var found=true;var founfToString=found.toString();//字符串"true"//调用数值的toString()式可以传递一个参数:输出数值的基数var num=10;alert(num.toString());//10alert(num.toString(2));//"0101"

不知道转换的值是否不是null和undefined的时候,可以使用转型函数String(),能将任何类型转换为字符串
如果值是null返回”null”
如果值是undefined返回”undefined”
其它和toString一样。

  • object类型
    对象其实是一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型名称来创建。
var o=new Object();

在ECMAScript中,Object类型是所有它的实例的基础。换句话说,Object类型所具有的任何属性和方法同样存在于更具体的对象中。

原创粉丝点击