1.函数的预解析
声明式的函数预解析时,整个函数将被提升到script标签内的最上面
赋值式的函数预解析时,将赋值的变量提升到script标签内的最上面,后面的赋值函数忽略
2.声明式
function sayHello(){
console.log("Hello");
}
sayHello()
3.赋值式
var eat=function(){
console.log("喜欢吃");
}
eat()
4.预解析
变量预解析:将声明的变量提升至script标签内的最上面
console.log(a)//医于变量的预解析,故此处打印的是undefined
var a=10
console. log(a)//由于上面已经进行赋值,故此处打印的是10
var a="张三"
function test(){
//用来计算两个数的和
var result=10+20
// console.log(result);
console.log(a);
// return result
}
test()
// console.log(test());
// console.log(result);
5.作用域
全局作用域和局部作用域
全局作用域:整个页面,只有当页面关闭时,全局作用域才会失效
局部作用域:全局作用域中又划分出的小范围的作用域,函数内部可以创建局部作用域,
到目前为止,也只有函数内部可以创建局部变量
//全局变量可以在函数内部进行访问,但是函数内部定义的变量不能在函数外部进行访问
function test_1(){
var a="李四"//变量采取的是就近原则
// console.log(a);
function test_2(){
a="王五"
// var a="王五"
}
console.log(a);
}
test_1()
console.log(a);
function test_3(){
num=100
}
test_3()
console.log(num);//自动转换成全局变量
var c=200
</script>
<script>
console.log(c);
</script>
6.获取标签的属性值
示例代码
<body>
<input type="text" value="文本框" id="user">
<div id="div_0" class="div" stuname="张三">这是一个div</div>
<div id="div_1" data-index="1" data-lianghaoyu="男"></div>
<script>
//获取标签的属性
// 1. 第一种:元素对象.属性名
// 第一步先找到标签 第二步获取到改标签的属性
var input=document.getElementById("user")
console.log(input.value,input.type);
//更改属性值
input.value="用户名"
//2.自定义属性
var div_0=document.getElementById("div_0")
//getAttribute():获取标签的属性的值(包括一些自定义属性的值)
console.log(div_0.getAttribute("stuname"));
console.log(div_0.getAttribute("class"));
//setAttribute():设置属性
div_0.setAttribute("stuid","1001")
//attributes():获取的是标签的自带的属性以及自定义属性
console.log(div_0.attributes);
console.log(div_0.attributes["id"]);
//3.自定义属性:data-***
//dataset:只能获取到data-****的属性
console.log(div_1.dataset);
console.log(div_1.dataset.index);
console.log(div_1.dataset["lianghaoyu"]);
</script>
</body>