文章目录
- 一、js组成
- 二、js的引入
- 三、基本语法
- 1、变量
- 2、基本规范
- 3、关键字
- 4、数据类型
- (1)基本数据类型
- (2)引用数据类型
- (3)数据类型转换
- (4)typeof运算符
- 5、运算符
- 6、流程控制
- (1)选择结构
- (2)循环语句
- 7、异常处理
一、js组成
核心(ECMAScript):规定了js的基本语法、关键字等
文档对象模型(DOM):整合js,css,html
浏览器对象模型(BOM):整合js和浏览器
js在开发中绝大多数情况是基于对象的,也是面向对象的。
二、js的引入
方法一:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script> alert(123); </script> </body> </html>
复制
方法二:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="tset.js"></script> </head> <body> </body> </html>
复制
tset.js文件:
alert(666);
复制
注:script标签放在哪都行,不过代码是从上到下顺序解释的的,所以最好放在body标签最下面,否则找标签可能找不到。
三、基本语法
1、变量
(1)变量是弱类型的。
(2)声明变量时不用声明变量类型,全部使用var关键字。
var x; //变量声明 x = 12; alert(x); //浏览器弹出一个弹框,输出x值 console.log(x); //在控制台输出x值
复制
var x=10; //变量声明,同时赋值 console.log(x); //在控制台输出x值
复制
(3)声明变量时,不用关键字var,那么它是全局变量
(4)变量命名:首字母只能是字母、下划线、$ 三选一,且区分大小写。
2、基本规范
(1)语句结束以分号结尾,如果不加分号,浏览器会以换行符为语句结束标志,自动加上分号。规范上,建议分号不要省。
(2)注释:单行注释 // 多行注释 /* */
(3)使用{ }来封装代码块
3、关键字
4、数据类型
(1)基本数据类型
number: 整型和浮点型
string: 字符串,首尾用单引号或双引号括起。js没有字符类型,单个字符也是字符串。
常用转义字符: \n 换行 \’ 单引号 \" 双引号 \\ 右划线
boolean: 布尔型,仅有两个值,true和false,分别代表1和0
undefined: 只有一个值,即undefined。变量声明后没有赋值,或者函数没有返回值时,其值为undefined。
Null: 只有一个值null,表示尚未存在的对象。如果函数返回的是对象,那么找不到该对象时,返回的通常是null。注意:typeof null 返回值为object
(2)引用数据类型
数组等复合数据类型均为object
(3)数据类型转换
①隐式转换:
数字 + 字符串:数字转换为字符串
数字 + 布尔值:布尔值转换为数字
字符串 + 布尔值:布尔值转换为字符串true或false
var x=10,y="ab",z=true; console.log(x+y) //10ab console.log(x+z) //11 console.log(y+z) //abtrue
复制
用一元加减法转化为数字
var n = "5" n = +n console.log(typeof n) // number
复制
②强制转换:
// 转换为整数 console.log(parseInt("123ab")) // 123 console.log(parseInt("ab123")) // NaN console.log(parseInt("hello")) // NaN //NAN: not a number,属于Number的一种 console.log(typeof NaN) //number
复制
console.log(parseInt("6.99ab")) // 6 // 转换为浮点数 console.log(parseFloat("6.99ab")) // 6.99
复制
console.log(eval("1+1")) // 2 console.log(eval("1<2")) // true
复制
(4)typeof运算符
typeof可以查看数据类型
function f() { // 相当于写了个html语句 document.write("<h1>hello world!</h1>") } console.log(typeof f()) // undefined console.log(typeof f) // function
复制
5、运算符
①加 + 减 - 乘 * 除 / 取余 %
console.log(2+3) // 5 console.log(3*2) // 6 console.log(11/2) // 5.5 console.log(11%2) // 1
复制
②自增1: i++ ++i 自减1: i-- --i
var i =10 console.log(i++) // 10 console.log(++i) // 12
复制
③比较运算符
大于 > 小于 <
大于或等于 >= 小于或等于 <=
赋值 =
等于 == 不等于 !=
完全等 ===
var n = 5 console.log(n == 5) // true console.log(n == "5") // true console.log(n === "5") // false
复制
比较运算符两侧如果一个是数字类型,一个是其他类型,会将其他类型转换为数字类型。
比较运算符两侧如果都是字符串类型,则从前往后按位比较字符对应的ascii码。
console.log(5>"3") // true console.log("5">"31") // true
复制
④NaN只要参与比较,布尔值一定是false,除非 !=
var n = NaN console.log(n>5) // false console.log(n<5) // false console.log(n==5) // false console.log(n==NaN) // false console.log(n!=NaN) // true
复制
⑤逻辑运算符
且 && 或 || 非 !
且 &&:
如果第一个操作数为真,返回第二个操作数。
如果第一个操作数为假,返回第一个操作数。
null,NaN,undefined,均为假
var x = 5, y = 0, z = true; console.log(x && y) // 0 console.log(y && z) // 0 console.log(z && x) // 5
复制
或 ||:
如果第一个操作数为真,返回第一个操作数。
如果第一个操作数为假,返回第二个操作数。
console.log(0 || 10) // 10 console.log(11 || 0) // 11
复制
非 !:
console.log(!10) // false console.log(!0) // true
复制
⑥位运算符
左移 <<:按位左移,后面补0
右移 >>:按位右移,前面补0
按位取反 ~
按位与运算 &
按位或运算 |
按位异或运算 ^
console.log(3<<1) // 6 console.log(3>>1) // 1 console.log(~6) // -7 console.log(2&1) // 0 console.log(2|1) // 3 console.log(2^3) // 1
复制
6、流程控制
(1)选择结构
if语句:
if (2>1){ console.log(222) }
复制
if (2>10){ console.log(222) }else { alert(10) }
复制
此外,if语句还可以嵌套
switch语句:
var week=3; switch (week){ case 1:alert("星期一");break; case 2:alert("星期二");break; case 3:alert("星期三");break; case 4:alert("星期四");break; case 5:alert("星期五");break; case 6:alert("星期六");break; case 7:alert("星期日");break; default:alert("nothing"); }
复制
(2)循环语句
for语句:
for (初始化; 条件;增量) {
循环体
}
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <p>hello1</p> <p>hello2</p> <p>hello3</p> <p>hello4</p> <script> var elses_P = document.getElementsByTagName("p") console.log(elses_P) for (var i=0;i<elses_P.length;i++){ console.log(i); console.log(elses_P[i]); } </script> </body> </html>
复制
for…in 语用于遍历对象的可枚举属性:
data={"河北省":["石家庄","廊坊"],"山西":["晋城","大同"],"陕西":["西安","延安"]}; for (var i in data){ console.log(i); }
复制
注意:for…in 这种语句有很多弊端,比如遍历数组时,返回是其索引值;遍历元素时,会输出一些其他内容。
while语句:
while (条件) {
循环体
}
var x = 0,i = 1; while (i<=100) { x += i; i++ } console.log(x) // 5050
复制
7、异常处理
try { // 这段代码顺序执行,其中任何一个语句抛出异常,该代码块就结束运行 } catch (e) { // 如果try代码块中抛出了异常,catch代码块中的代码就会被执行 // e是一个局部变量,用来指向Error对象,或者其他抛出的对象 } finally { // 无论try中代码是否有异常抛出,甚至try代码块中有return语句, // finally代码块中始终会被执行。 } // 主动抛出异常 throw Error("xxx")
复制
例:
try { console.log(123) throw Error("define error") } catch (e) { console.log(e) } finally { console.log("finally") }
复制