变量
用于存放数据的容器,我们通过变量名获取数据,甚至数据可以修改
本质:变量是程序在内存中申请的一块用来存放数据的空间
变量的使用
变量在使用时分为两步:1.声明变量 2.赋值
声明变量
var age; //声明一个名称为age的变量
复制代码
var 是一个JS关键字,用来声明变量(variable变量的意思)。使用该关键字声明变量后,计算机会自动为变量分配内存空间,不需要程序员管
age是程序员定义的变量名,我们要通过变量名来访问内存中分配的空间。
赋值
age = 10; //给age这个变量赋值为10;
复制代码
" = " 用来把右边的值赋给左边的变量空间中
变量值是程序员保存到变量空间里的值
变量的初始化
声明一个变量并赋值,就称之为变量的初始化
var age = 18;//声明变量同时赋值为18
复制代码
变量语法扩展
更新变量
一个变量被重新赋值后,它原有的值就会被覆盖,变量以最后一次赋的值为准
var age = 18;
age = 88;//最后的结果就是88
复制代码
同时声明多个变量
同时声明多个变量时,只需要写一个var,多个变量名之间用英文逗号隔开。
var age = 10, name='aa',sex = '女';
复制代码
声明变量的特殊性:
- 只声明不赋值,输出结果为 undefined(程序也不知道里面存了啥,所以就undefined)
- 不声明,不赋值,直接使用,结果是 报错: XXX is not defind
- 不声明,直接赋值使用,结果是 可以使用,不报错,但是不提倡使用
最好的使用方式就是先声明再赋值
变量名命名规范
- 由字母(A-Za-z)、数字(0-9)、下划线( _ )、美元符($)组成。
- 严格区分大小写
- 不能以数字开头
- 不能是关键字
- 变量名必须有意义
- 遵守驼峰命名法:首字母小写,后面的单词的首字母需要大写,myFriendHello
标识符、关键字、保留字
标识符:指开发人员为变量、属性、参数取的名字
- 标识符不能是关键字或者保留字
关键字:指JS本身已经使用了的字,不能再用它们充当变量名、方法名
- 包括break,case,catch,continue,default,delete,do,else,finally,for,function,if,in,instanceof,new,return,switch,this,throw,try,typeof,var,void,while,with等
保留字:预留的“关键字”,意思是现在虽然不是关键字,但未来可能成为关键字,同样不能使用它们当变量名或方法名。
- 包括:boolean,byte,char,class,const,debugger,double,enum,export,extends,float,goto,implements,import,int,interface,long,package,private,protected,public,short,static,super,throws等
数据类型
数据类型简介
为什么需要不同的数据类型?
在计算机中,不同的数据类型所占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利用存储空间,于是定义了不同的存储类型
简单来说,数据类型就是数据的类别型号,比如姓名"张三",年龄18,这些数据的类型是不同的。
变量的数据类型
变量是用来存储值的所在处,它们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。JavaScript是一种弱类型(或者说动态语言)。这意味着不用提前声明变量的类型,在程序运行的过程中,类型会被自动确定
JS的变量数据类型是只有程序运行的过程中,由JS引擎根据等号右边的值来确定的。运行完毕,变量就确定了数据类型。
var age = 10; // 这是一个数字型
var areYouOk = yes; // 这是一个字符串
复制代码
变量的数据类型是可以变化的(JS拥有动态类型,同时也意味着相同的变量可用作不同的类型):
var x=6; x为数字
var x='bill'; x为字符串
复制代码
数据类型的分类
JS把数据类型分为两类:
- 简单数据类型(Number,String,Boolean,Undefined,Null)
- 复杂数据类型(Object)
简单数据类型 | 说明 | 默认值 |
---|---|---|
Number | 数字型,包含整型值和浮点型值,如21、0.21 | 0 |
Boolean | 布尔值类型,如true、false,等价于1和0 | false |
String | 字符串类型,如"张三" 在JS里面,字符串都带引号 | ' '或者" " |
Undefined | 声明了变量但没给值,此时该变量的值为undefined | undefined |
Null | 声明了变量为空值 | null |
数字型Number
1. 数字型进制
常见的有二进制、八进制、十进制、十六进制。
要记住,在JS中,八进制前面加0,十六进制前面加0x
var num=0x9; //9,十六进制 0-9 a-f
var num1=0xa; //10
复制代码
2. 数字型范围
JS中的最大值和最小值
alert(Number.MAX_VALUE);
alert(Number.MIN_VALUE);
复制代码
3. 数字型的三个特殊值
alert(Number.MAX_VALUE*2);//Infinity
alert(-Number.MAX_VALUE*2);//-Infinity
alert('Hello'-100);//NaN
复制代码
- Infinity 代表无穷大,大于任何数值
- -Infinity 代表无穷小,小于任何数值
- NaN Not a number 代表一个非数值
4. isNaN
用这个方法来判断一个变量是否为非数字类型 返回true 或者false
console.log(isNaN(12));//false
console.log(isNaN('Hello'));//true
复制代码
字符串型String
字符串型可以是引号里的任意文字(单引号或双引号)
因为HTML标签里的属性使用的是双引号,所以这里推荐使用单引号
1. 字符串引号嵌套
JS中可以使用单引号嵌套双引号,或者用双引号嵌套单引号(外单内双、外双内单)
2. 字符串转义符
类似HTML里面的特殊字符,字符串中也有特殊字符,我们称之为转义符
转义符都是由\开头的,常用的转义符说明如下:
转义符 | 解释说明 |
---|---|
\n | 换行符,n是newline的意思 |
\ | 斜杠 \ |
' | 单引号 |
" | 双引号 |
\t | 缩进 |
\b | 空格,b是blank的意思 |
3. 字符串长度以及拼接
字符串的长度: 字符串是由若干的字符组成的,这些字符的数量就是字符串的长度。通过字符串的length属性可以获取整个字符串的长度
var s='hello';
alert(s.length);//5
复制代码
字符串的拼接 + :
数值相加,字符相连
只要有字符串和其他类型相拼接,最终的结果都是字符串类型
console.log('a'+'b');//ab
console.log('你好'+18);//你好18
console.log(12+12);//24
console.log('12'+12)//1212
复制代码
var age=18;
console.log('我今年'+age+'岁')
复制代码
- 我们常用字符串和变量来拼接,因为变量可以很方便的修改里面的值
- 变量不能添加引号,加了就会变成字符串
布尔型Boolean
有两个值:true或false
参加运算时,true为1,false为0
Undefined 和 Null
一个声明后没有赋值的变量就会有一个默认的undefined值(注意进行相连或相加时的结果)
//undefined
var str;
console.log(str); //undefined
var variable=undefined;
console.log(variable+'hello');//undefinedhello
console.log(variable+1);// NaN undefined和数字相加最后的结果是NaN
//null
var space=null;
console.log(space+'hello'); //nullhello
console.log(space+1);//1
//注意简单数据类型null返回的是一个空对象 object
//如果有个变量我们以后打算存储为对象,暂时没想好放什么,这个时候就给null
console.log(typeof space);//object
复制代码
获取变量数据类型
1. 获取检测变量的数据类型
typeof运算符(一元运算符,放在其单个操作数的前面,操作数可以是任意类型。返回值为表示操作数类型的一个字符串) 可用来获取检测变量的数据类型
var num=10;
console.log(typeof num);//number
var str='hello';
console.log(typeof str);
var flag=true;
console.log(flag);
var vari=undefined;
console.log(typeof vari);
var timer=null;
console.log(timer);//object
//从prompt取过来的值是 字符型的
var age=prompt('输入年龄:');
console.log(age);
console.log(typeof age)
复制代码
在开发者检测工具中,如果字体是黑色的就是字符型的
2. 字面量
字面量是在源代码中一个固定值的表示法,通俗来说,就是字面量表示如何表达这个值
- 数字字面量:8,9,10
- 字符串字面量:'hello','好家伙'
- 布尔字面量:true,false
数据类型转换
1.什么是数据类型转换
使用表单、prompt获取过来的数据默认是字符串类型的,此时就不能直接进行加法运算,而需要转换变量的数据类型。通俗来说,就是把一种数据类型的变量转换为另外一种数据类型
我们通常会实现三种方式的转换:
- 转换为字符串类型
- 转换为数字型
- 转换为布尔型
2. 转换为字符串
方式 | 说明 | 案例 |
---|---|---|
toString() | 转成字符串 | var num=1; alert(num.toString()); |
String()强制转换 | 转成字符串 | var num=1; alert(String(num)); |
加号拼接字符串 | 和字符串拼接的结果都是字符串 | var num=1; alert(num+'hello'); |
加号拼接字符串的转换方式也称为隐式转换
3. 转换为数字型(重点)
方式 | 说明 | 案例 |
---|---|---|
parseInt(string)函数 | 将string类型转换为整数数值型 | parseInt('78'); |
parseFloat(string)函数 | 将string类型转成浮点数数值型 | parseFloat('78.11'); |
Number()强制转换函数 | 将string类型强制转换为数值型 | Number('12') |
js隐式转换(- * /) | 利用算数运算隐式转换为数值型 | '12'-0 |
前两个和隐式转换是重点
4. 转换为布尔型
- 代表空、否定的值会被转换为false。如:''、0、NaN、null、undefined
- 其余的值都会被转换为true
console.log(Boolean(''));//false
console.log(Boolean(0));//false
console.log(Boolean(NaN));//false
console.log(Boolean(null));//false
console.log(Boolean(undefined));//false
console.log(Boolean('好好学习'));//true
console.log(Boolean(11));//true
复制代码