前言
JavaScript 与 ECMAScript的关系
ECMAScript是一种标准,
JavaScript是一种符合ECMAScript标准的语言
W3C标准
网页主要有三部分组成:结构层—HTML
\quad
\quad
\quad
\quad
\quad
\quad
\quad
\quad
\quad
样式层—CSS
\quad
\quad
\quad
\quad
\quad
\quad
\quad
\quad
\quad
行为层—JavaScript
数据类型
字符串
用单引号或双引号引起来的文本内容就是字符串
如果字符串中有双引号,则最外面可以用单引号,还可以在引号前加\(转译符)
’ " \n(换行) \t(缩进) \b(空格)
数值类型
加号的作用
两个字符串用+号连接,那么加号的作用是连接这两个字符串
两个数值用加号连接,那么加号的作用是运算符的作用
字符串与数值用加号连接,那么加号的作用是连接这两个值
判断数据类型
Typeof: typeof() 或者 typeof 直接量
如 console.log(typeof(“abc”)); 输出string
console.log(typeof(123)); 输出number
console.log(typeof abc); 输出undefined
console.log(abc); //报错,前面都是对的
了解其它数据类型
简单数据类型(存储在栈,值类型)与复杂数据类型(存储在堆,引用类型)的分类是根据他们存储的位置不同分的
简单数据类型
string
number
NaN : not a number
作用:用来表示数值的一种不正常的状态
一般会在计算出现错误的情况下出现
isNaN:判断是否为NaN
例如:var a = 123;
var b = "123";
console.log(isNaN(a-b)); 输出true
boolean 类型
取值 true, false
作用 用于判断条件的结果
undefined
如果一个变量声明了但是没有赋值,他的结果就是undefined(在页面上是不会报错的)
consloe.log(a); 同样是undefined,但是由于a没有声明变量,则会报错
复杂数据类型
Null
object对象
例如: var a = new Object(); //对象的创建
a.xingming = "zhangsan"; //对象属性的添加
a.chengji = 99;
alert( a.xingming+a.chengji);
Array
例如:var a = new Array(); //创建数组
a[0] = "81";
a[1] = "82";
alert("得到数组中第一个数"+a[0]);
注意:数组定义好以后是一个无穷大的容器,元素可以任意增加
a.length 得到数组长度
Function
例如:function gaobai(){
console.log("我爱你");
console.log("呵呵");
} //函数的定义
gaobai(); //函数的调用
funcation jiafa(shu1,shu2){ **形参**
return shu1+shu2;
// 如果函数没有return,则默认返回undefined
}
Jisuan(12,13); **实参**
变量 (断电以后会清空)
声明变量
var a; //var(声明变量的关键字) a(变量名)
给变量赋值
a = "123";
变量名的注意点
只能是由英文字母,数字,下划线以及$符组成,并且数字不能放在名称的开头。
如果名称带有下划线
遵守驼峰命名法,首字母小写,第二个单词的首字母大写,如userName
变量可以和字符串一起输出
运算符
算术运算符
+: 如果加号的一边是字符串,那就是连接
如果加号的两边是数值,那就是加法
例如:var a = 123;
var b = "123";
console.log(a+a+a+b); 输出369123
console.log(a+b+a+b); 输出123123123123
console.log(b+a+a+a); 输出123123123123
-
*
/
\quad
//除0,返回Infinity
% 取余
\quad
//除0,返回NaN
( )
运算符简写
+=
-=
*=
/=
%=
a++ 后自加1 先表达式返回a的值 再a = a+1
++a 先自加1 先a = a+1 表达式返回a的值
例如:var a = 1; var b = a++ + ++a; // 输出4,1+3 = 4
复杂的运算
var a = Math.pow(2,10); 2的10次方
Math.round(); 四舍五入
Math.ceil(); 向上取整
Math.floor(); 向下取整
Math.abs(); 求绝对值
Math.max(x,y,z); 返回最大值
Math.min(x,y,z); 返回最小值
Math.random() 生成一个大于等于0,小于1.0的伪随机数
Math.PI 圆周率
Math.E e 自然对数的底数
Math.sqrt(3) 3的平方根,就是9
Math.pow(27,1/3) 27的立方根,就是3
Math.sin()
Math.log(10) 10的自然对数
Math.log(100)/Math.LN10 以10为底100的对数
Math.log(512)/Math.LN2 以2为底512的对数
Math.exp(3) e的三次幂
逻辑运算
&&(与,并且) //短路运算符,当有一个为false时,后面的不再计算
//输出为undefined
|| (或) //短路运算符,当有一个为true时,后面的不再计算,,与&&同理
! (非,取反) 得到对应Boolean的反
不是从左往右解析的,因为有优先级
逻辑运算符的优先级
!> && > ||
() > */ >±
比较运算符
> 大于
< 小于
>=
<=
== 判断是否相等, 仅仅只判断数据的内容,没有判断数据的类型
例如:var a = 3;
var b = "3";
console.log(a==b); 输出true
var c = true;
var d = "true";
console.log(c==d);
输出false ,因为true本质上存储的是1,false本质上存储的是0,所以c就等于1,1和字符串true相比就是false
=== 判断是否全等, 即关心数据,又关心类型,但是NaN例外
例如:var a = NaN;
var b = NaN;
console.log(a===b); 输出false
console.log(a==b); 输出false
!= 不等于 仅仅只判断数据的内容,没有判断数据的类型
!== 不等等于 即关心数据,又关心类型
赋值运算符和逗号运算符
var a , b, c;
a = b = c = 1;
强制数据转换类型
转number
Number(要转的内容)
a. 如果转换的内容可以转成数字,那么就直接返回这个内容对应的数字
b. 如果不可以转换,那么返回NaN
c. 如果内容是浮点数,返回会保留小数点内容
d. 如果内容为空,那么转换为0
parseInt(要转的内容)
a . 如果内容是浮点数,返回不会保留小数点内容,不是四舍五入
b . 忽略字符串前面的空格,直至找到第一个非空字符
c . 如果遇到第一个非数值的,则不继续解析
例如:var a = " $\quad$ 123456abc123";
console.log(parseInt(a)); 输出123456
d . 可以传递两个参数,第一个是要转换的字符串,第二个是要转换的进制
例如:var num = parseInt("A",10); //A按10进制解析成nan,因为10进制中没有A
var num1 = parseInt("A",16); //A按16进制解析成10
var num2 = parseInt("10",10); //10按10进制解析成10
var num3 = parseInt("10",16); //10按16进制解析成16
var num4 = parseInt("10",8); //10按8进制解析成8
var num5 = parseInt("10",2); //10按2进制解析成2
parseFloat(要转的内容)
除第四小点d以外,与parseInt一样,唯一的区别是保留小数
转字符串
toString()
例如:var a = 10;
var b = a.toString(); //默认转换成十进制
console.log(b); //输出10
console.log(a.toString(8)); //转换成八进制,输出12
console.log(a.toString(16)); //转换成八进制,输出a
console.log(a.toString(2)); //转换成八进制,输出1010
console.log(typeof b); //输出string
几乎每一个值都有toString(),但是null 和 undefined 没有,因为比如null的值和类型都是null,这时可以用string()
String(要转的内容)
var b = String(a);
Boolean转换
Boolean(要转的内容)
除false、“”(空字符串)、0、NaN、undefined,其余任何值都会转换成true,注意如果是“false”,则输出为true
隐式转换
1、隐式转换成数字
直接在要转换的内容前加上+
例如:var a = “123”;
a = +a; 输出为123,number
a = a-1; 输出为123,number
a = a*1; 输出为123,number
a = a/1; 输出为123,number
a = a%1; 输出为123,number
2、隐式转换成字符串
var a = 123;
a = a + “”;
3、隐式转换成Boolean
var a = 123;
a = !a
调试
1、打开浏览器的开发模式
2、找到sorcer,并且找到要查看的代码
3、点行号,打断点
4、刷新页面
5、鼠标放在相应已经运行过的变量上,会显示相应的值
6、
7、当进入js内部代码时,可以按这个返回到刚才的地方,相当于F10
if
If (boolean){
语句1;
}else{
语句2;
}
If (boolean){
语句1;
}else if (boolean){
语句2;
}else{
语句3;
}
Switch case
作用于if else 一样 switch判断相等的时候用的是===全等,并且不要忘记写break;否则会全部执行
switch (变量){
case 变量的值1:
代码块1;
break;
case 变量的值2:
代码块2;
break;
case 变量的值3:
代码块3;
break;
default: (可写可不写,不写的话,不满足任何上面情况时直接break)
默认代码块;
break;
}
三元运算符
Boolean表达式?操作1:操作2;
循环语句
1、while(boolean){}
2、do{}while(boolean)
3、for(var i =1;i<=100;i++){}
获取当前日期
var date = new Date(); //获取当前日期
var week = date.getDay(); //获取星期,数字0-6,0表示星期日