变量常量和数据类型以及数据类型的转换
一、定义变量
1、定义变量
a=3;
b=10; //ES5严格模式就不能再使用,
var x=3; //var不能少
/*
window对象是可以省略不写的,早期没有变量(window.a=3;相当于a=3;),目前明确定义一个变量,
这个变量仍属于window的属性,ES6时var就不再属于window下的属性了。
*/
2、变量的命名
- 变量的命名是字符,数字,下划线,$组成,首字母不能是数字,区分大小写
- 变量命名遵守驼峰式命名, 例:getStringName 第一个单词首字母小写,后面每个单词首字母大写
- 当定义临时变量或者函数的参数时,变量使用下划线起头_width
- 变量定义时不能使用关键词和保留字,例:var if=3;
- 变量名称起名时要注意不能与window对象下的属性或者方法同名
二、定义常量
1、定义常量
const a=3; //ES6才有,常量的值不能改变
2、常量的命名
- 常量命名时全大写字母,使用下划线区分单词
const COL_NUM=10;
三、数据类型
基础数据类型
1、字符型 String
var a1="abc"; //双引号不能嵌套双引号
var a2='abc';
var a3=`5 `; //ES6新增
var a4="\u4eoo" ; //ES6双引号中可以放入utf-8的编码;
2、数值型 Number
var a1=100; //整数
var a2=10.23; //浮点数
var a3=3.2e+5; //科学计数法(3.2e+5等价于3.2*10的5次幂)
var a4=0xff; //16进制数
var a5=045; //8进制数,ES6中废弃
var a6=0b100; //二进制数
var a7=NaN; //属于数字类型,但不是一个数字
3、布尔型 Boolean
var a1=true; //表示真,在计算机中以1的形式存储
var a2=false; //表示假,在计算机中以0的形式存储
4、未定义类型 Undefined
var a1;
var a1=undefined;
5、空型 Null
var a1=null;
Undefined和Null的区别:Undefiend表示声明变量但没有给变量赋值,Undefiend转换为数值是NaN,Null表示这里有一个值,只不过这个值是空值,必须给变量赋值为Null时才是Null,Null转换为数值是0。
复杂数据类型
对象型 Object
var obj={a:1,4:true,c:"qwe"}; //key:value 键值对
//键只能时字符型或者Symbol型(ES6新增),如果键不是字符型会自动转换为字符串;值可以时任意类型。
函数 function
数组 Array
四、数据类型的转换
1、转数值型
- 通过Number构造函数,强制转换为数值
Number("123"); //整体转换
Number("a123"); //如果字符串是由数字构成,强转后将会变为数值,否则变成NaN
Number(true); //1
Number(false); //0
- parseInt()
parseInt("123a"); //一位一位的转换,直到遇到字母或者小数点停止
parseInt("12.3"); //可以用来取整
parseInt("ff",16); //可以根据字符串的进制来转换成十进制数值
- parseFloat()
parseFloat("10.213") //可以保留小数
parseFloat("10.213.23") //遇到第二个小数点时会停止
parseInt()和parseFloat()转换布尔值结果为NaN
2、转字符串型
- String()
String(20); //"20"
String(true); //"true"
- n.toString()
var a=123;
a.toString(); //"123" 此方法不能转换布尔型,会报错
a.toString(2); //数值型转字符串型时,里面的值代表进制,将数值按照进制转换为字符串
- n.toFixed() 数值型转字符串型
var a=123.567;
a.toFixed(2); //默认参数时0,允许参数为0-20之间,表示保留小数点后几位
//保留时会自动四舍五入,但是值为负数时会出现BUG。
- n.toExponential() //科学计数法
var n=1e+3;
n.toExponential(); //大于1时 "1e+3"
var n=0.1e+3;
n.toExponential(); //小于1时 "1e+2"
- n.toPrecision() //科学计数法
var n=1e+2;
n.toPrecision(); //"100"
3、转布尔型
Boolean()
Boolean(0);
Boolean("");
Boolean(NaN);
Boolean(false);
Boolean(undefined);
Boolean(null);
只有以上六种情况为false,其他都为true。
4、转对象型
Object()
将对象转换成 数值是NaN,将对象转换成字符串是[object Object]
扩展:string,number,boolean,undefined,null 都是存在内存的栈中,object是存在内存的堆中,存储在栈中的数据读取速度快,但是栈中可以存储的数据较小,堆中可以存储大量的数据,但是读取速度慢。
所有的基础类型都是基于Object构建而成。
var a=5;//数值 number 这种类型会存储在栈中 typeof number
var b=new Number(5);//数值对象 Number 会存储在堆中 typeof object
number可以理解为Number类型在栈中的映射
五、获取数据的基本类型
typeof