js是从上到下,从左到右执行的
一:变量
1.命名规则:必须由字母,下划线,数字和$符号组成,不能以数字开头。
2.不能是关键字和保留字。例如: for,while.
3.区分大小写的
4.命名规范:名字必须有意义,遵守驼峰命名法,首字母小写,后面单词的首字母要 大写,例如: userName userPassword
例:var age = 18;
二:数据类型
简单数据类型:Number String Boolean Undefined Null
Number类型:
十进制: 0-9 例:var num = 10;
十六进制: 0-9 A-F A=10 B=11,C=12,D=13,E=14,F=15.例:var num = 0xA;
八进制:基础数字:0-7 例:var num = 010;
浮点数:var n =5e-324; //科学计数法 5乘10的-324次方。
浮点数最高精度是17位小数,不要判断两个浮点数是否相等。
浮点数最大值 :Number.MAX_VALUE ,值为:1.7976931348623157e+208
浮点数最小值Number.MIN_VALUE。值为5e-324
无穷大:Infinity 无穷小:-Infinity
String类型:
var msg = '好好学习' var ,msg = "好好学习"
单引号和双引号不能混用。
\n 换行
\t 制表
\b 空格
Boolean类型:
true和false,区分大小写
计算机内部存储:true为1,false为0;
Undefined Null:
1.Undefined表示一个声明了没有赋值的变量,变量只声明的时候值默认是Undefined
2.Null表示一个空,变量的值如果为null,必须手动设置。如果一个变量的值是null,说明变量是有值的,是空。
复杂数据类型:Object
三:获取变量的类型
typeof
例:var age = 18;
var name = 'wyn';
console.log(typeof age); //Number类型
console.log(typeof name); //string类型
var result = typeof name;
console.log(typeof result);//typeof返回的结果是string
四:字面量
在源代码中一个固定值的表示法。
数值字面量:8,9,10
字符串字面量:‘好好学习’,“好好学习”
布尔值字面量:true,false
五:注释
单行注释: //被注释的单行内容
多行注释: /* 被注释的多行内容*/
六:数据类型转换
谷歌浏览器内,字符串颜色是黑色的,数值和布尔类型颜色是蓝色的,Undefined和Null是灰色的。
转换成字符串类型:
1: toString()方法
var num = 18;
var isRight = true;
console.log(typeof num.toString());
console.log(typeof isRight.toString()); // 用typeof获取类型,用toString转换为字符串
2:string()方法
null和Undefined无法使用toString方法,var a = null; console.log(a.toString());报错,不能读取属性
var num = 18;
var isRight =true;
console.log(String(num));//转换为字符串
console.log(String(isRight));
3:字符串拼接转换方法
var num = 18;
var isRight = true;
console.log(typeof (num + ' ')); //里面加小括号改变运算顺序,优先执行小括号内部内容。
console.log(typeof (isRight + ' '));
其他类型转换为数值类型:
1:Number()方法
Number()把任意值转换为数值
var str = 'abc';
var isRight = true;
console.log(Number(str)); //返回结果是NaN,不是一个数字
console.log(Number(isRight)); //返回结果:1,计算机true是1
console.log(Number('123')); //字符串123转换为数字123;
console.log(Number('123abc')); //Number()吧字符串转换成数值类型的时候,如果字符串中有一个字符不是数字,返回NaN。
2:parseInt()方法,parse是解析,把变量解析为int,int是整数的意思。
parseInt()无法转换小数,到小数点结束
var str = '123';
var isRight = false;
console.log(parseInt(str));//字符串123转换为数字123;
console.log(parseInt(isRight));//paresInt无法把布尔类型转换为数值类型。返回NaN
var s1 = 'abc';
console.log(parseInt(s1));//返回NaN,paresInt无法把字符串转为数值。
var s1 = '123abc';
console.log(parseInt(s1)); 返回123,parseInt在转换字符串时候,如果遇到数字就会转换数字,如果遇到非数字就会返回。
var s2 = 'abc123';
console.log(paresInt(s2)); //返回NaN,如果字符串第一个值是非数字,返回NaN.
3:parseFloat()方法
parseFloat()把数值转化为浮点数。
var str = '123.67';
var isRight = true;
console.log(paresFloat(str));
console.log(paresFloat(isRight)); //返回NaN,无法转换布尔类型。
var str = '123.12.123abc';
console.log(parseFloat(str)); //解析到第一个点,第二个点无法解析。
4:取正或者取负; + -
var num = -5;
console.log(num);
var str = '123';
console.log(+str); //返回123,-号返回-123
字符串如果是123abc返回NaN.可以转换布尔类型。
转换成布尔类型Boolean()
Number和null转换后为false
转换后为false的情况:null undefind ' '空字符串 0 NaN五种情况
其他转换为true.
七:操作符
算数运算符:
+ - * / % 加 减 乘 除 取余数
var x = 5; var y = 10;
console.log(x + y);
console.log(x / y);
console.log(x * y);
console.log(x % y) //输出5
console.log(x / 0) //无穷大
console.log(x % 0) //NaN
一元运算符:
只有一个操作数的运算符是一元运算符。有两个操作数的运算符叫作二元运算符(如:5+6)
前置++ 自身加1 :++5
var num = 5; console.log(++num) //5自身+1输出6。++num先让自身+1,然后再返回表达式的结果。
var num1 = 7;
console.log(num + ++num1); //前置++先自身加1再参与运算,输出6+8=14
前置--同前置++
后置++ :5++
先返回表达式的结果num,然后再对num自身加1
var num = 5;
console.log(num++);//先返回num结果5,然后在对num自身加1,所以输出5
console.log(num); //自身加1之后才会输出6
var num1 = 7;
console.log(num + num1++); //num返回6+num17=13;
console.log(num1); //表达式输出完之后num1+1,执行结果是8.
例:
var a = 1; var b = ++a + ++a; console.log() //++a先执行自身+1,然后再返回表达式的结果,第一个a是2,第二个++a在第一个++a基础上再+1,是3,所以输出2+3=5;
var a =1; var b = a++ + ++a; console.log(b);//a++先返回表达式结果1,再执行+1,a++返回结果之后是2,++a在2基础上再+1,所以输出1+3=4
var a = 1; var b = a++ + a++; console.log(b);//输出1+2=3
var a = 1; var b = ++a + a++; console.log(b);第一个a先返回表达式结果是2,第二个a返回表达式结果2运算,输出2+2=4;
逻辑运算符:(布尔运算符)
&&(逻辑与):两个操作数同时为true,结果为true,否则都是false,与是并且的意思。是二元运算符
例:var a =true; var b =true; console.log (a && b ); //a等于ture并且b等于true时结果才是true.
|| (逻辑或):两个操作符有一个为true,结果为true,否则为false,或是或者的意思。 是二元运算符
例:var a =true; var b =true; console.log (a || b ); //a或者b有一个为true,结果就为true,两边都为false时结果才为false.
! (逻辑非) :取反 是一元运算符
var a = true; console.log ( !a )//对a进行取反,输出结果是true.
关系运算符:(比较运算符)
< > >= <= == != === !==
< > >= <=是比较大小的
var a = 10; var b = 5;
console.log(a > b)//返回true console.log(a < b)//返回false
= != === !== 是比较相等的
console.log ( a == b );//输出false
console.log( a !=b);a不等于b,输出true
-------------------------------------------------------------
var a = 10; var b = '10';
console.log (a == b);//输出true,先把字符串10转换为数值再判断,两个等号是判断值是否相等。
console.log(a === b);//输出false,三个等号先判断类型是否一致,类型不一一致为fase,只有值和类型都一致才返回true.
!=不等于,只要判断值不相等就返回true,
!==,判断值和类型都不相等才会返回true
赋值运算符
= += -= *= /= %=
var num = 5; // 把5这个常亮赋值给变量num
vae num1 = num * 5; //把运算的结果赋值给num1
num1 +=5;num1 -=5;//简化
运算符优先级
优先级从高到低
1. ( ) 优先级最高
2.一元运算符 ++ -- !
3.算数运算符 先* / %,后+ -
4.关系运算符 > >= < <=
5.相等运算符 == != === !===
6逻辑运算符 先&& 后||
例1:4 >= 6 || '人' != '阿凡达' && !(12 * 2 == 144) && true //返回true
例2:var num = 10;
5 == num / 2 && (2 + 2 * num).toString() === '22' //返回true
八:流程控制
顺序结构
代码从上到下依次执行就是顺序结构
分支结构
根据不同情况,执行对应代码
if (/*表达式条件*/){
//执行语句
}else{
//执行语句
}
三元运算符:表达式1 ? 表达式2 : 表达式3
switch语句里面相等性判断是===,判断值和类型是否相等。如果不加break会有穿透效果。
循环结构
重复做一件事情
三种:while, do-whild, for
while语句:当循环条件为true时,执行循环体,为false时,结束循环。
while (循环条件) {
// 循环体
}
for(初始表达式1;条件表达式2;自增表达式3){
//循环体
}
九:数组
数组可以存储很多项,有顺序,很多项形成一个集合Array是一个数组 的字面量。
var names = ['zs', 'ls', 'ww','zl',‘ ’,‘123’]; //' '里面不算长度
console.log ( names [0] ); //获取第一项
console.log ( names [1] ); //获取第二项值
console.log ( names [111] ); //不存在的索引返回undefined
用索/下标可以获取数组中的数据。数组中的索引是从0开始
数组中存储的数据类型可以不一致,可存储任意类型
console.log (names.length)//获取数组长度
console.log ( names [0] )//获取数组中第一个元素
console.log ( names [names.length - 1] ); //数组名.length-1可以获取数组中最后一个元素
names[0] = 'xxx' 修改数组中的第一个元素,根据下标修改。
names[6]='xxx修改不存在的数组,会给数组增加一项。
names[222]='xxx'; 给数组动态加入值,跳过的值是undefined
获取数组中的每一项(遍历数组)
for (var i = 0; i < nams.length; i++ ) {
console.log(names[i]);
}
反向遍历数组
for (var i = names.length - 1; i >=0; i-- ) {
console.log (names[i] )}
给空数组加值
var scrores = [];
for (var i =0;i < 10;i++) {
scores[i] = i;
}
console.log(scores);
清空数组:scores.length = 0;