1.变量
概念:变量是计算机内部存储数据的标识符,根据变量名称可以获得内存中存储的数据。使用变量可以方便的获取和修改内存中的数据。
变量的声明:var 变量名;
变量赋值:变量名 = 值;
var number; 变量的声明
number = 666; 给变量赋值
变量的命名规则和规范
规则:变量有字母,下划线,数字,美元符号$组成,不能以数字开头,区分大小写,变量不能用保留字和关键字命名。
规范:变量命名采用驼峰命名法,首单词字母小写,后面单词字母大写,例如:userName。
//交换两个变量
//方法一 定义一个临时变量
<script>
var num1 = 5;
var num2 = 6;
var temp;
console.log('交换前的值:',num1,num2);
temp = num1;
num1 = num2;
num2 = temp;
console.log('交换后的值:',num1,num2);
//方法二 不用定义临时变量
var n1 = 2;
var n2 = 3;
console.log("交换前的值:",n1,n2);
n1 = n1+n2; //此时n1 = 3+2 = 5
n2 = n1-n2; //此时n2 = 5-3 =2 = n1
n1 = n1-n2; // 此时你n1 = 5-2 = 3 = n2
console.log('交换后的值:',n1,n2);
</script>
2.数据类型
JavaScript的数据类型分为两种:简单类型和复杂类型。
简单类型:Number、String、Boolean、Undefined和Null
复杂类型:数组,Object
注意:虽然JavaScript中没有栈和堆的概念,但是方便理解,可以说简单类型是存储在栈上,复杂类型是存储在堆上。
简单类型:
1.Number:数值类型
数值类型表示的进制方法:十进制、八进制十六进制,最后计算机都会转换为二进制。
数组类型有整型和浮点型,浮点型可以使用小数或者科学技术法表示(e表示的是10)。
但是需要注意的是,浮点数要考虑精度问题,不能使用浮点数去判断两个数的大小。
var num1 = 0.1;
var num2 = 0.2;
var sum = num1 + num2;
//结果不是0.3 浮点数的最高精度是17位小数,所以在计算的时候精度远远不如整数
document.write(sum,'<br />');
Number类型常用的属性和方法:
判断数值的范围:最小值:Number.MIN_VALUE;最大值:Number.MAX_VALUE;无穷大:Infinity;无穷小:-Infinity。
是否是数值的判断:isNaN() 返回布尔类型 ,不是数值返回true,是数值返回false。
2.String:字符串类型
用双引号或者单引号括起来的都是字符串类型,推荐还有单引号,区分元素的属性。
如果需要在字符串中输出单引号或者双引号,可以使用转义字符" ’ ,常用的转义字符,换行:\n ,制表\t ,空格\b, 回车 \r。
获取字符串的长度:length属性。
字符串的拼接:+,加号的两边只要有一边是字符串,那么拼接的结果就是字符串。
var s1 = hello ;
var s2 = 'world';
var str = s1 + s2; //字符串的拼接,只要有一边是字符串,拼接的结果就是字符串
document.write(str.length,"<br />");
3.Boolean类型:布尔类型
布尔类型只有两个值;true或者false 在计算机内部存储,true为1,false为0。
4.Undefined和Null
Undefined:声明没有赋值的变量,变量只声明,没有赋值,默认是undefined。
Null:表示空,在内存中也占有位置,是空值,不是没有的意思,而是空的意思。
undefined和null需要区分开。
5.获取变量的类型 typeof
6.数据类型的转换
转换成字符串:toString()方法,String()方法,拼接字符+,就是在两个数据之间添加一’’
注意:Undefined和Null没有toString()方法
转换成数值类型:
Number():如果字符串中含有非数字,那么返回结果就为NaN
parseInt():转换成整数,如果字符串中第一个字符是数字那么会将数字内容转换为数值类型,直到出现非数值,如果第一个字符不是数值,那么返回NaN。
另外 parseInt()不能转换布尔类型。
parseFloat():转换为浮点型的数值,使用与parseInt()一样,如果字符串中只有整数,那么就转换为整数。
取正,取反:+ -,可以转换布尔类型,字符串中带有非数值不能转换。
转换为布尔类型 Boolean()
结果为false:NULL undefined " " 空字符串 0 NaN,除了这5种情况外,其他都转换为true。
布尔类型隐式转换的情况:if条件语句和使用取反!。
3.运算符
3.1 算术运算符 + - * / %
算术运算符的使用与数学上的使用基本相同,不过要注意,一个数除以0结果是无穷大Infinity,除以0的余数是NaN。
3.2 自增自减运算符 ++ –
前置:先做自增或自减的操作,然后在返回结果;
后置:先返回表达式的结果,然后对操作数进行加1或者减1。
var a = 2;
//++a:先自增 ++a的值为3;a--:a-- 此时值为3,运算之后a为2;a++此时值为2
//所以最后的结果就是 3 + 3 + 2 = 8 此时a = 3
var result = ++a + a-- + a++;
document.write(result,"<br />");
3.3 逻辑运算符 && || ! (布尔运算符)
与运算符&&:两个操作数同时为true,结果才为true;
或运算符||:两个操作数同时为false,结果才为false;
取反运算符!:true取反为false,false取反为true;
3.4 关系运算符(比较运算符)
> < >= <= == != === !==
==与===的区别:
前者只需比较值是否相等,与类型无关,后者比较的是值和类型是否都相等
var a = 10;
var b = '10';
document.writeln(a == b); //返回结果true
document.writeln(a === b); //返回结果是false 类型不同
3.5 赋值运算符
= >= <= *= /= %=
3.6 常见运算符的优先级:
优先级最高 ()
一元运算符 ++ -- !
算术运算符 先 * / % 后 + -
关系运算符 > >= < <=
相等运算符 == === != !==
逻辑运算符 先&& 后||
赋值运算符
运算符优先级的问题
先找到优先级低的运算符:逻辑运算符和赋值运算符,然后将运算符两边的操作数有括号括起来,再计算括号内部的运算。
4.流程控制语句
JavaScript流程控制语句:顺序结构、选择结构(分支结构)、循环结构。
4.1 顺序结构
从上执行到下的代码就是顺序结构
if else if else if else switch多分支
注意:switch多分支结构进行判断使用的是 ===, 需要值和类型都相同,如果case没有加break,则会一直执行到有break的语句。
3.循环结构
while do while for
while循环语句 while (循环条件) { 循环体 } ;
do while循环语句 不管条件是否成立都会执行一次 do { 循环体 } while(循环条件);
for循环 for(初始化表达式,条件,变量的变化表达式) for循环的三个表达式可以在()外定义;
while和 do while一般用于不确定循环的次数 for循环一般用于确定了循环的次数。
//循环使用的常见案例
// 打印 1到100的累加和
var i = 1;
var sum = 0;
while (i <= 100) {
document.write(i+" ")
sum = i + sum;
i++;
if (i == 50) {
document.write("<br />")
}
}
document.write("<br />"+"1到100的累加和是 "+sum+"<br />");
// 打印九九乘法表
for (var i = 1; i <= 9; i++) {
for (var j = 1; j <= i; j++) {
document.write(j+'*'+i+'='+(i*j)+" ");
}
document.write("<br />");
}
4.跳转语句 continue和break
break:跳出循环,即循环结束,开始执行循环后面的内容,就是执行循环{}后的内容。
continue:跳出当前循环,执行下一次循环,在for循环里面,就是跳到自增自减的语句。