1.认识JS变量
变化数据的记录--变量
2.变量的命名格式
在JS中如何命名一个变量呢
变量的声明:在JS中声明一个变量使用var关键字(variable单词的缩写)(后续学习ES6还有let、const声明方式)
变量赋值:使用=给变量进行赋值
这个过程也可以分开操作:
同时声明多个变量:
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title> </head> <body><script>//定义一个变量// 第一步:变量的声明(告诉js引擎接下来我要定义一个变量)// var关键字// 第二部:变量的赋值(使用=赋值即可)// var curretnTime="16:00"// 其他的写法一:// var currentTime;// currentTime="16:02";// currentTime="17:40";// 其他写法二:同时声明多个变量(不推荐,阅读性比较差)// var name,age,height// name="chen"// age=22// height=170var name="chen",age=18,height=1.70//补充:// 1.当我们打印变量的时候,实际上是在打印变量中保存的值//2.console.log(参数1,参数2,参数3..............)console.log(name,age,height) </script> </body> </html>
变量命名规则:必须遵守
1.第一个字符必须是一个字母、下划线(_)或一个美元符号($)
2.其他字符可以是字母、下划线、美元符号或数字
3.不能使用关键字和保留字命名
什么是关键字,什么是保留字?
关键字就是类似于var之类的。保留字是可能会变成关键字的
词法语法 - JavaScript | MDN (mozilla.org)
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Lexical_grammar
4.变量严格区分大小写
变量命名规范:建议遵守
多个单词使用驼峰标识
赋值=两边都加上空格
一条语句结束后加上分号,也有很多人的习惯是不加
变量应给做到见明知意;
变量练习
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title> </head> <body><script>// 练习一:定义一下变量,保存自己的个人信息var name="chen";var age=18;//练习二:定义一个变量name1,赋值成name2。var name2=10;var name1=name2;// 练习三:定义变量,保存两个数字,并且对两个变量的数字进行交换// 方式一:使用临时变量// var temp=a1;// var a1=a2;// var a2=temp;// 方式二:不使用临时变量var a1=3,a2=4;console.log("交换前a1,a2:",a1,a2)var a1=a1+a2;var a2=a1-a2;var a1=a1-a2;console.log("交换后aq,a2:",a1,a2)// 练习四:接受用户输入的一个值,并且使用一个变量来保存var inputinfo=prompt("请输入一个值")console.log(inputinfo)</script> </body> </html>
JS变量的注意事项:
注意一:如果一个变量未被声明(declaration)就直接使用,那么就会报错;
注意二:如果一个变量有声明,但是没有被赋值,那么默认值是undefined
注意三:如果没有使用var声明变量也可以,但是不推荐(事实上会被添加到window对象上)
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title> </head> <body><script>//注意事项一:如果一个变量未被声明就直接使用,那么会直接报错// window里面有一个默认的name变量var currentAge =ageconsole.log(message)// 注意事项二:如果一个变量有声明,但是没有赋值操作var info console.log(info)//注意事项三:在JS中也可以不适用var在全局声明一个变量(不推荐)//如果不使用var来声明一个变量,也是可以声明成功的,并且这个变量会被加入window对象address="河北"console.log(address)</script> </body> </html>
3.数据类型和typeof
事实上数据类型是数据结构的封装
JavaScript中的值具有特定的类型
例如,字符串或者数字
我们可以将值赋值给一个变量,那么这个变量就具备了特定的类型
一个变量可以在前一刻是一个字符串,下一刻就存储一个数字;
允许这种操作的编程语言,例如JavaScript,就被称为“动态类型”(dynamically typed)的编程语言;
这就意味着JS非常灵活,但是灵活也是一把双刃剑。
在JS种,有8种基本的数据类型(7种原始类型和1种复杂类型)
Number
String
Boolean
Undefined
Null
Object
Bigint(后续了解)
Symbol(后续了解)
typeof是一个操作符,不是一个函数
因为ECMAScript的类型系统是松散的,所有需要一种手段来确定任意变量的数据类型
typeof操作符就是为此而生的
对一个值使用typeof操作符会返回下列字符串之一
undefined表示值未定义
boolean表示值为布尔值
string表示值为字符串
number表示值为数值
object表示值为对象(而不是函数)或者null
function表示值为函数
symbol表示值为符号
typeof()的用法
你可能还会遇到另一种语法:typeof(x)它与typeof x相同
typeof是一个操作符,并非是一个函数,()只是将后续的内容当成一个整体而已。
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title> </head> <body><script>var a="123"a=nulla=123a=trueconsole.log(typeof a)</script> </body> </html>
4.常见的数据类型
4.1Number类型
number类型代表整数和浮点数
数字number可以有很多操作,比如,乘法*、除法/、加法+、减法-等等。
常见的运算符后续会有专门的讲解
除了常规的数字,还包括所谓的“特殊数值”(“special numeric values”)也属于Number类型
Infinity:代表数学概念中的无穷大,也可以表示成Infinity;
比如1/0得到的就是无穷大
NaN:NaN代表一个计算错误,它是一个错误的操作所得到的结果
比如字符串和一个数字相乘
在之前我们学习过进制的概念,数字类型也有其他的进制表示方法:
十进制、十六进制、二进制、八进制
数字表示的范围:
最小整数值:Number.MIN_VALUE,这个值为:5e-324,小于这个的数字会被转化成0
最大正数值:Number.MAX_VALUE,这个值为:1.7976931348623157e+308
<script>// 1.整数和浮点数var age=18var height=1.70console.log(age,height)//2.特殊的数值// Infinityvar num1=Infinityvar num2=1/0console.log(num1,num2)//NaN:not a number(不是一个数字)var result =3*"abc"console.log(result)// 3.进制表示var num3=100 //十进制var num4=0x100var num5=0o100var num6=0b100console.log(num4,num5,num6)// 5.数字可以表示的范围var max=Number.MAX_VALUEvar min=Number.MIN_VALUEconsole.log(max,min)</script>
4.2String类型
在开发中我们经常会有一些文本需要表示,这个时候我们会使用字符串String;
比如人的名字、地址、简介等等
JS中的字符串必须被括在引号里,有三种包含字符串的方式
双引号:"Hello"
单引号:'Hello'
反引号:`Hello`(ES6之后)
前后的引号类型必须一致
如果在字符串里面本身包括单引号,可以使用双引号
如果在字符串里面本身包括双引号,可以使用单引号
字符串中的转义字符
除了普通的可以打印字符之外,一些有特殊功能的字符可以通过转义字符的形式放入字符串中
字符串中的属性和方法
字符串还有很多细节和操作方法
这里我们先掌握几个基本的字符串使用操作
操作一:字符串拼接,通过+运算符(后续)
操作二:获取字符串长度
<script>// 1.String基本使用var name="abc"var address="广州市"var intro="性格决定一切"//2.别的引号的使用// 单引号var message1='Hello World'// 双引号var message2="Hello World"// 反引号(ES6新增语法)// ${变量/表达式}var message3=`Hello World, ${name}, ${2+3}`// 字符串本身中包含的引号var message4='my name is "chen"'var message5='my name \\ \'\' is "chen"'console.log(name,address,intro,message1,message2,message3,message4,message5)// 4.字符串本身有的方法和属性var message="Hello World"console.log(message.length)// 字符串操作var nickname="chen"var info="my name is"var infoStr=`my name is ${nickname}`var infoStr2=info+nicknameconsole.log(infoStr,infoStr2)</script>
4.3Boolean类型
Boolean(布尔)类型用于表示真假
比如是否毕业,是否有身份证,是否购买车票,是否成年人;
比如开发中,我们会判断一个账号是否登录,是否是管理员,是否具备某个权限,是否拥有某个英雄,皮肤等;
布尔(英语Boolean)是计算机科学中的逻辑数据类型,以发明布尔代数的数学家乔治.布尔为名。
Boolean类型包含两个值,true和false
在后续的逻辑运算符中我们再详细学习
4.4Undefined类型
Undefined类型只有一个值,就是特殊值undefined
如果我们声明一个变量,但是没有对其进行初始化时候,它默认就是undefined;
显示的声明为undefined也是一样的
这里有两个注意事项:
注意一:最好再变量定义的时候进行初始化,而不是只是声明一个变量;
注意二:不要显示的将一个变量赋值为undefined
如果变量刚开始什么都没有,我们可以初始化为0、空字符串、null等值;
4.5Object类型
Object类型是一个特殊的类型,我们通常把它称为引用类型或者复杂类型
其他的数据类型我们通常称为“原始类型”,因为它们的值是一个单独的内容(字符串、数字或者其他);
Object往往可以表示一组数据,是其他数据的一个集合;
再JS中我们可以使用花括号{}的方式来表示一个对象;
Object是对象的意思,后续我们会专门讲解面向对象的概念
4.6Null类型
Null类型同样只有一个值,即特殊值null
null类型通常用来表示一个对象为空,所有通常我们再给一个对象进行初始化时,会赋值为null
null和undefined的关系
undefined通常只有一个在变量声明但是未初始化的时候,它的默认值是undefined才会用到
并且我们不推荐直接给一个变量赋值为undefined,所有很少主动来使用
null值非常常用,当一个变量准备保存 一个对象,但是这个对象不确定的时候,我们可以先赋值为null
数据类型的总结
JS中有八种基本的数据类型(前七种为基本数据类型,也称为原始类型,而object为复杂数据类型,也称为引用类型)
number:用于任何类型的数字:整数或者浮点数
string:用于字符串:一个字符串可以包含0个或者多个字符,所有没有单独的单字符类型
boolean:用于true和false
undefined:用于未初始化的值-----只有一个undefine值的独立类型
object:用于更负责的数据结构
null:用于未知的值---只有一个null的值的独立类型
5.数据类型的转换
在开发中,我们可能会在不同的数据类型之间进行某些操作
比如把一个String类型的数字和另外一个Number类型的数字进行运算
比如把一个String类型的文本和另外一个Number类型的数字进行相加;
比如把一个String类型或者Number类型的内容,当做一个Boolean类型来进行判断;
等等
也就是在开发中,我们会经常需要对数据类型进行转换
大多数情况下,运算符和函数会自动将赋予它们的值转换为正确的类型,这是一种隐式转换
我们也可以,通过显示的方式来对数据类型进行转换
5.1字符串String的转换
其他类型经常需要转换成字符串类型,比如和字符串拼接在一起或者使用字符串中的方法
转换方式一:隐式转换
一个字符串和其他类型进行+操作
如果+运算左右两边有一个是字符串,那么另一边会自动转换成字符串类型进行拼接;
某些函数的执行也会自动将参数转为字符串类型;
比如console.log函数;
转换方式二:显示转换
调用String()函数
调用toString()方法(后续面向对象再学习)
方法和函数的区别,我们后续在讲解面向对象的时候会讲到
<script>var num1=123var age=18var isAdimin=true// 1.转换方式一:隐式转换(用的非常多)var num1Str=num1+""var ageStr=age+""var isAdiminStr=isAdimin+""console.log(typeof num1Str, typeof ageStr, typeof isAdiminStr)// 2.转换方式二:显示转换var num2Str=String(num1)console.log(typeof num2Str)</script>
5.2 数字类型Number的转换
其他类型也可能会转换成数字类型
转换方式一:隐式转换
在算数运算中,通常会将其他类型转换成数字类型来进行运算
比如“6”/“2”
但是如果是+运算,并且其中一边有字符串,那么还是按照字符串来连接的
转换方式二:显示转换
我们也可以使用Number()函数来进行显示转换
其他类型转换成数字的规则
值:undefined 转换后:NaN
null:0
true和false:1 0
string:去掉首位空格后的纯数字字符串中含有数字。如果剩余字符串为空,则转换结构为0.否则,将会从剩余的字符串中读取数字。当类型转换出现error时候返回NaN
<script>// 方式一:隐式转换(用的少)var num1="8"var num2="4"var result1=num1+num2console.log(typeof result1)//数字类型隐式转换var result2=num1*num2console.log(result2)//结果是32//方式二:显示转换(Number())var result3=Number(num1)console.log(typeof result3)// 其他类型转换成数字的规则console.log(Number(undefined)) //Nanconsole.log(Number(null)) //0console.log(Number(true)) //1console.log(Number("fafa12")) //NaNconsole.log(Number(" 123 ")) //123console.log(Number("")) //0</script>
5.3 布尔类型Booleam的转换
布尔(boolean)类型转换是最简单的
它发生在逻辑运算中,但是也可以通过调用Boolean(value)显示的进行转换
转换规则如下:
直观上为“空”的值(如0、空字符串、null、undefined和NaN)将变成false
其他的值变成true
注意:包含0的字符串“0”是true
一些编程语言(比如PHP)视“0”为false,但是在JS中,非空的字符串总是true
<script>//方式一:隐式转换//分支语句var isAdmin=truevar num1=123//true//方式二:显示转换console.log(Boolean(num1),Boolean(undefined))//转换有如下的规则//直观上为空的值,转成Boolean类型都是false//直观上为空的值,0/“”/undefined/null/NaN ---false//注意事项console.log(Boolean("")) //falseconsole.log(Boolean("0")) //true</script>