一、JavaScript简介
JavaScript是运行在浏览器端的,基于对象和事件驱动的脚本语言,JavaScript主要是解决前端与用户交互的问题,包括使用交互和数据交互。当前学习JavaScript的目的是为了给前端页面加一些特效功能
1、JavaScript组成
ECMAScript:基础语法,比如变量,数据类型,判断,循环等基础语言
DOM:文档对象模型,Document Object Model,用来获取和设置文档中的标签元素的
BOM:浏览器对象模型,Browser Object Model,用来获取和设置浏览器的属性和行为
2、JavaScript使用方式
(1)行内式
<input type="button" id="btn1" value="点击试试1" onclick="alert('哈喽')">
(2)页面script标签嵌入式
<script>
alert("哈喽2")
</script>
(3)外部引入
<script src="./js/myjs.js"></script>
3、JavaScript语法格式
(1)一条js代码语句应该以分号;结尾
(2)注释:1、单行//、多行/**/
4、JavaScript输出
(1)console.log将结果输出到浏览器的控制台
(2)alert以弹窗的形式输出
(3)document.write在页面中显示
二、JavaScript 变量及数据类型
1、JavaScript变量
JavaScript 使用关键字 var 来定义变量, 使用等号来为变量赋值:
<script>
var num = 100;
var name = "张三";
var a=1,b=2,c=3;
</script>
2、JavaScript数据类型
| 类型 | 说明 |
|---|---|
| 数字(Number) | 可以是整数或者是小数,或者是科学计数(e) |
| 字符串(String) | 可以使用单引号或双引号 |
| 布尔(Boolean) | 布尔数值,true 或 false |
| 对空(Null) | 空值 |
| 未定义(Undefined) | 这个值表示变量不含有值 |
引用数据类型: 对象(Object)、数组(Array)、函数(Function)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
var name = "张三";
console.log(name,typeof name);
var num1 = 10;
var num2 = 3.14;
console.log(num1,typeof num1,num2,typeof num2);
var flag = true;
console.log(flag,typeof flag);
// 变量如果不赋值,默认值可以理解为是undefined
var a=undefined;
console.log(a,typeof a)
</script>
</head>
<body>
</body>
</html>
三、JavaScript的数据转换
| 属性 | 说明 |
|---|---|
| typeof | 查看 JavaScript 变量的数据类型 |
| onstructor | 返回所有 JavaScript 变量的构造函数 |
| String(),toString() | 将数字转换为字符串 |
| Number() | 将字符串转换为数字 |
| parseFloat() | 解析一个字符串,并返回一个浮点数 |
| parseInt() | 解析一个字符串,并返回一个整数 |
| Boolean() | 解析一个字符串,并返回一个布尔值 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
var num = 100;
console.log(num,typeof num)
// 转字符串
var num2 = String(num)
console.log(num2,typeof num2)
var s = "123"
console.log(s,typeof s)
// 转数字
var s2 = Number(s)
console.log(s2,typeof s2)
// 转数字,如果失败,NaN Not a number
console.log(parseInt("123"),parseInt("123.456"),parseInt(123.456),parseInt("123.456abc"),parseInt("xx123.456abc"))
console.log(parseFloat("123"),parseFloat("123.456"),parseFloat(123.456),parseFloat("123.456abc"),parseFloat("xx123.456abc"))
// 转布尔
console.log(Boolean("a"),Boolean("1"),Boolean("0"),Boolean(0),Boolean(null),Boolean(undefined),Boolean(""))
</script>
</head>
<body>
</body>
</html>
四、JavaScript运算符
算术运算符
| 运算符 | 描述 | 例子 | x运算结果 | y运算结果 |
|---|
- |加法| x=y+2 |7| 5
- |减法| x=y-2 |3| 5
- |乘法| x=y*2 |10| 5 / |除法| x=y/2 |2.5| 5 % |取模(余数)| x=y%2| 1| 5 ++ |自增 |x=++y |6| 6 ++ |自增|x=y++ |5| 6 -- |自减 |x=--y| 4 |4 -- |自减|x=y-- |5| 4
赋值运算符
| 运算符 | 例子 | 等同于 | 运算结果 |
|---|---|---|---|
| = | x=y | x=5 | |
| += | x+=y | x=x+y | x=15 |
| -= | x-=y | x=x-y | x=5 |
| *= | x*=y | x=x*y | x=50 |
| /= | x/=y | x=x/y | x=2 |
| %= | x%=y | x=x%y | x=0 |
比较运算符
| 运算符 | 描述 | 比较 | 返回值 | |
|---|---|---|---|---|
| == | 等于 | x==8 | false | |
| === | 绝对等于 | (值和类型均相等) | x==="5" | false |
| != | 不等于 | x!=8 | true | |
| !== | 不绝对等于 | (值和类型有一个不相等,或两个都不相等) | x!=="5" | true |
| 大于| x>8| false < | 小于| x<8| true = | 大于或等于| x>=8| false <= | 小于或等于| x<=8| true
逻辑运算符
| 运算符 | 描述 | 例子 |
|---|---|---|
| && | and | (x < 10 && y > 1) 为 true |
| ! | not | !(x==y) 为 true |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
var age = 20;
age++;
console.log(age);
var a = 10;
// 先赋值再减1
var b = a--;
console.log(a,b);
var a = 10;
// 先减1再赋值
var b = --a;
console.log(a,b);
console.log("a"+"b"); //"ab"
console.log("a"+10); //"a10"
var num = 10
num+=20
console.log(num) //30
console.log(10==10,10=="10",10==="10") //true true false
console.log(10!=10,10!="10",10!=="10") //false false true
console.log(true && false,true||false,100&&10,!false) //false true 10 true
var num = 10>100?1:2; //2
console.log(num);
</script>
</head>
<body>
</body>
</html>
五、JavaScript条件语句及循环
条件语句代码示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
var num = 100
if (num % 2 == 0) {
console.log("偶数")
} else {
console.log("奇数")
}
var ret = "C"
switch (ret) {
case "A":
console.log("90-100")
break
case "B":
console.log("80-90")
break
case "C":
console.log("70-80")
break
case "D":
console.log("60-70")
break
case "E":
console.log("0-60")
break
default:
console.log("数据不合法")
}
</script>
</head>
<body>
</body>
</html>
循环代码示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
var msg = "我爱北京天安门"
for(var i in msg){
console.log(i,msg[i])
}
</script>
<script>
var msg = "我爱北京天安门"
for(var i=0;i<msg.length;i++){
console.log(i,msg[i])
}
</script>
<script>
/*var msg = "我爱北京天安门"
// 死循环
for(var i=0;i<msg.length;i--){
console.log(i,msg[i])
}*/
</script>
<script>
var msg = "我爱北京天安门"
var i = 0
while(i<msg.length){
console.log(i,msg[i])
i++
}
</script>
<script>
for(var i=1;i<11;i++){
for(var j=11;j<21;j++){
console.log(i,j)
}
}
</script>
<script>
for(var i=1;i<11;i++){
for(var j=11;j<21;j++){
if(i==5 && j==15){
console.log("*****************************")
break
}
console.log(i,j)
}
}
</script>
</head>
<body>
</body>
</html>
五、JavaScript函数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
// js解析的时候优先解析函数,将函数放到内存
// 函数的定义
function say_hello(num1, num2) {
console.log("sayhello...")
console.log(num1 + num2)
}
// 函数的调用
say_hello(1, 2)
// 函数的定义
function say_hello2(num1, num2) {
console.log("sayhello2...", arguments)
console.log(arguments[0] + arguments[1])
}
// 函数的调用
say_hello2(1, 2)
// 函数的定义
// 此时arguments拿不到默认值
function say_hello3(num1, num2 = 100) {
console.log("sayhello3...", arguments)
console.log(num1 + num2)
}
// 函数的调用
say_hello3(1)
say_hello3(1, 2)
// 函数的定义
// 此时arguments拿不到默认值
function say_hello4(num1, num2 = 100) {
console.log("sayhello4...")
// return num1+num2
// return
}
// 函数的调用
console.log(say_hello4(1, 2))
//定义匿名函数
var myfunc = function (a, b) {
return a + b
}
console.log(myfunc, myfunc(1, 2));
//定义自运行函数,注意这里需要使用;与前后隔开
(function (a, b) {
console.log("halou", a + b)
})(1, 2);
(function () {
console.log("halou2")
})();
</script>
</head>
<body>
</body>
</html>
六、JavaScript创建对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
//创建对象
var person = new Object();
//设置属性
person.firstName = "王";
person.lastName = "二";
person.money = function () {
console.log("工作...")
}
//调用对象
console.log(person)
console.log(person.firstName)
person.money()
//定义对象,这种一般称为"json",类似于Python中的字典
var person2 = {
"firstName": "王",
"lastName": "王",
"money": function () {
console.log("工作...")
}
}
//调用对象
console.log(person2)
console.log(person2.firstName)
person2.money()
//定义类,此时的this 相当于py的self
function Person(firstName, lastName, money) {
this.firstName = firstName
this.lastName = lastName
this.money = money
}
//创建对象
var person3 = new Person("王", "二", function () {
console.log("工作")
})
//调用对象
console.log(person3)
console.log(person3.firstName)
person3.money()
//此时this是window对象
console.log(this)
//此时this是window对象
function f() {
console.log(this)
}
f()
//此时this是person
var person1 = {
"name":"张三",
"age":18,
"show":function () {
console.log(this,this.name,this.age)
}
}
person1.show()
</script>
</head>
<body>
</body>
</html>