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

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声明变量但未初始化时它的值就是underfined
alert(name);//没有声明出错
alert(typeof message);//undefined
alert(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;//十进制的56
var num3=089;//无效的八进制,被解析为89
var num4=0xa//十进制的10
var num5=1.2;

//由于浮点数值内存空间是整数两倍,下面这些浮点数会自动转换为整数
var num6=10.0;//解析为整数10
var 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));//true
alert (isNaN(10));//false
alert (isNaN("blue"));//true

(3)数值转换

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

var num1=Number("hello");//NaN
var num2=Number("011");//11
var num3=Number(" ");//0
var num4=Number(true);//1
Var num5=Number(null);//0
var 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");//0
var num2=praseFloat("0908");//908
var 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());//10
alert(num.toString(2));//"0101"

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值