文章目录
2019年7月15日22:16:40 开始学习JavaScript。
资源:bilibili/av34087791。
基础语法
JavaScript的位置
- 在body前,放在script中。
<script type=“text/javascript”>
/* js代码; */
</script>
- 在body内,可放在标签的属性中。
如button的 οnclick=“alert(‘点击button响应字符串同时信息’)” ;
如超链接中 href=“javascript:alert(‘字符串’)”。
虽然可以写在标签的属性中,但是不方便维护;因此可以将js代码写在tittle中或外部js文件中
- 外部js文件,通过script标签引入。
<script type=“text/javascript” scr=“js/script.js”> (中间无需写代码,写也会被忽略) </script>
预前知识
注释
/*
多行注释
*/
//单行注释
原则
1.JS严格区分大小写;
2.JS中每一条语句以分号(;)结尾;
3.JS忽略多个空格和换行
字面量、变量、标识符
字面量是一些不可改变的值,比如1 2 3 4 5;但一般不直接使用字面量。
变量可以改变值,用变量保存字面量的值。使用var声明一个变量。
var a;
a = 123;
var a = 456;
标识符是JS中可以自主命名的东西。例如:变量名、函数名、属性名。标识符中可以含有字母、数字、_、$。标识符不能以数字开头。标识符不能是ES中的关键字或保留字。
标识符一般采用驼峰命名法。
-
首字母小写,每个单词开头字母大写,其余字母小写,如helloWorld。
-
JS底层保存标识符时实际上采用的是Unicode编码,所以理论上讲,所有的utf-8中含有的内容都可以作为标识符。
Unicode编码
console.log("\u0031")
- \u + 十六进制。
在网页中,是 &# + 十进制。
数据类型
数据类型就是字面量的类型。
基本数据类型:
- String
- Number
- Boolean
- Null
- Undefined
引用数据类型:
- Object
字符串
var str = “hello”;
使用 \ 进行转义。
可以使用typeof检测变量的类型。
console.log(typeof a);
数值
Number包括整数和浮点数。
Number.MAX_VALUE
如果数值超过Number.MAX_VALUE时,会返回Infinity。类型是number。
NAN
NAN表示not a number,类型是number。
Number.MIN_VALUE
返回最小值,能表示的最小的正小数。
- 如果使用JS进行浮点运算,可能得到一个不精确的结果;所以千万不要使用JS进行对精确度要求比较高的运算。
布尔值
只有true与false两个值。
var bool = true;
NULL
NULL只用一个值null。
var a = null;
NULL专门用来空的对象。
使用typeof返回null值时,会返回’object’。
UNDEFINED
声明了没赋值的变量。
var a;
var b = undefined;
使用typeof,会返回’undefined’。
强制转换String
- 方式一:toString()方法。
注意,null、undefined没有toString()方法。
a = a.toString();
- 方式二:String()函数。
注意,对于number和boolean,就是调用toString()。
a = null;
a = String(a);
强制转换Number
- 方式一:Number()函数。
注意,字符串转数字:
- 纯数字字符串正常;
- 如果有非数字内容,转换为NaN;
- 如果字符串是一个空串或者全是空格,则转换为0;
- 对于Boolean,true转为1,false转为0;
- 对于null,转为0;
- 对于undefined,转为NaN。
- 方式二:parseInt()、parseFloat(),专门用来对付字符串。
a = “123px”;
a = parseInt(a);
b = “456.789”;
b = parseInt(b);
则 a = 123 b= 456。
c = “123.456.789”;
c = parseFloat©;
则 c = 123.456。
其他进制数字
16进制,0x开头。
a = 0x10;
a = 0xCafe;
输出是都会转换成十进制输出。
8进制,0开头。
b = 070;
2进制,0b开头,但不是所有浏览器都支持。
c = 0b11;
parseInt(对象,参数1),参数1指定进制数。
parseInt(a, 10);
强制转换Boolean
Boolean()函数。
- 数字除了0和NaN,其余都是true;
- 字符串除了空串,其余都是true;
- null和undefined都是false。
运算符
算数运算符
- 对于Number和非Number的运算,转换为Number后运算。(除了字符串加法)
+
var a = “锄禾日当午”+
“汗滴禾下土”;
任何值和字符串加法运算,都会转换成字符串。并进行拼串。
result = 1;
console.log("result = " + result);
因此可以进行隐式数据转换,转换为String。
var c = null;
c = c + “”;
- * / %
只有+是转为字符串,其余的运算符都是转为Number。
var result = 100 - “1”;
因此可以进行隐式数据转换,转换为Number。
var c = “123” - 0;
%是取余数。
一元运算符
只需要一个操作数。
+ -
正好对数字无影响,负号取反。负号对于非Number,先转为Number。
a = true;
a = -a;
则,a = -1。
自增和自减
a++;
++a;
逻辑运算符
布尔值运算
!、&&与||。
a = !a;
var b = true && true;
var c = true || false;
注意这里的短路功能。
非布尔值与或运算
与
对于非布尔值运算,先将其转换为布尔值,并返回原值。
var result = 2 && 4;
则* result = 4 *。
-
与运算,如果两个值都为true,则返回后边的。
-
与运算,如果两个值都为false,则返回前边的。
-
这与短路的思维有关。如果第一个值为true,则返回第二个值;如果第一个值为false,则返回第一个值。
或
-
如果第一个值为true,则直接返回第一个值。
-
如果第一个值为false,则直接返回第二个值。
result = “” || “hello”;
则,* result = “hello” *。
赋值运算符
a = 5;
a += 5;
a -= 5;
a *= 5;
a /= 5;
a %= 5;
关系运算符
> <
>= <=
-
任何值和NaN进行比较,都是false。
-
如果两边都是字符串,则不会转换为数字,而比较字符的Unicode编码。
-
注意,在比较字符串的数字时,一定要转型。
相等运算符
==
-
当使用两个类型时,会自动进行类型转换。
-
NaN不和任何值相等,包括它本身。
-
可以通过isNaN()函数来判断是否为NaN。
!=
会自动进行类型转换。
===
全等,类型不同,直接返回false。
!==
不全等,与!=类似,但不会进行自动的类型转换。类型不等,直接返回true。
条件运算符
条件表达式?语句1:语句2;
运算符的优先级
var a, b, c;
优先级一样,则从左往右。
语句与代码块
在JS中可以使用{}来为语句进行分组,{}中的整体叫做代码块。
流程控制语句
- 条件判断语句
- 条件分支语句
- 循环语句
if
if(条件表达式){
}
if(条件表达式){
}else{
}
if(条件表达式){
}else if(条件表达式){
}else{
}
switch
switch(表达式){
case 表达式1:
break;
case 表达式2:
break;
}
while
while(true){}
do{}while(true);
for
for(var i = 0 ; i < 10; i++){}
break和continue
- if中不能使用break。
- 可以加一个标签,终止循环。
outer:
for(){
break outer;
}