一、JS引入方式:
1、内嵌:
<script>
alert("hello")
</script>
2、外引:
<script src="js/demo.js"></script>
如果一个script标签中既有内嵌又有外引,内嵌会被完全覆盖掉
如果出现多个script内嵌或多个script外引或多个script内嵌和script外引,则按其出现先后顺序执行
defer表示延时加载,执行到这的时候先执行下面的再回来执行这部分
<script src="js/demo.js" defer></script>
二、变量定义:
var a;
var 申明变量的关键字,没有其他意义 a是变量名
变量定义不区分类型,但是用的时候有类型
三、变量类型:
1、基本类型
① 数字
var a = 10;
var b = 0.3;
② 字符串
加 ‘’ “”
var c = "hello";
var d = 'demo';
③ 布尔类型
真假 true false
var e = true;
var f = false;
④ undefined类型
只声明变量没有给变量赋值 undefined
var g; //未给变量赋值其值默认为undefined
⑤ null
涉及到一个量,但是这个量不存在
2、复合类型
① 数组
//定义数组: []代表空数组 数组中可以放任意值,包含数组、对象、函数
//即数组中可以放任意基本类型和复合类型
var arr = [10, 0.5, "demo", 'hello', undefined, null, true, false, [], {}, function (a, b) {
console.log("匿名函数执行了");
console.log(a);
console.log(b);
}];
//数组是[],对象是{},function是函数
//控制台打印
console.log(arr)
//数组访问:数组通过下标访问
console.log(arr[4])
console.log(arr[8])
arr[10]('a',10) //也可以使用数组中函数
② 对象
//定义对象 {} key:value
var obj = {
name: "张三",
age: 40,
sex: "男",
marry: true,
//可以在对象中再定义对象
wife: {
name: "李四",
age: 40,
sex: "女",
},
//也可以定义一个对象数组
child: [
{
name: "lili",
age: 10,
sex: "男",
},
{
name: "xixi",
age: 8,
sex: "女",
}],
//还可以在对象中定义函数
eat: function f(a, b) {
console.log("对象里的命名函数");
console.log(a);
console.log(b);
},
run: function (a, b) {
console.log("对象里的匿名函数");
console.log(a);
console.log(b);
}
}
//访问对象:对象.属性 的方式进行访问
console.log(obj.name)
console.log(obj.wife)
//访问对象中数组中对象的属性
console.log(obj.child[0].name)
//调用对象中函数
obj.eat('a', 10)
obj.run('b', 100)
③函数
函数本质上也是个值,可以赋给变量
//函数定义
//命名函数定义
//function定义函数的关键字 f方法名 (a,b)参数列表 {}函数体
function f(a, b) {
console.log("命名函数执行了");
console.log(a);
console.log(b);
}
//命名函数调用:方法名()
f("hello", 10)
//匿名函数定义
//把函数赋给一个变量
var aa = function (a, b) {
console.log("匿名函数执行了");
console.log(a);
console.log(b);
}
//匿名函数调用:变量名()
aa(1000, "hihi")
//也可以把命名函数赋给一个变量,方法如下
var bb = function f(a, b) {
console.log("命名函数执行了");
console.log(a);
console.log(b);
}
//但此时 f("hello", 10) 无法再被识别,只能使用 bb("hello", 10) 进行调用
//因此更推荐使用匿名函数,命名函数需要考虑方法名是否能够使用,而匿名函数直接使用变量名调用即可