标题代码预解析
预解析
javascript源代码 -> 浏览器加载执行 -> 输出结果
|
预解析
1. 声明式函数提到代码最上面
2. var 声明的变量提到代码最上面
-->
</head>
<body>
<script>
fn()
console.log('f1 ',f );
function fn(){
console.log('fn >>>')
}
var f = 100
console.log('f2 ',f );
// function fn(){
// console.log('fn >>>')
// }
// var f
// fn()
// f = 100
<!--
当遇到同名函数和变量时
=> 预解析优先处理函数
-->
</head>
<body>
<script>
fn()
function fn(){
console.log('fn >>>');
}
fn()
var fn = 100
fn()
// function fn(){
// console.log('fn >>>');
// }
// var fn
// fn() // 函数调用语句
// fn()
// fn = 100 // 变量赋值
// fn() // fn 不是一个函数
if语句块不管条件是否满足都会执行预解析
console.log('num 11', num);
if (3 > 5) {
var num = 100
}
console.log('num 22 ', num);
return语句后的代码也会预解析
function fn() {
console.log(num) // num is not defined
if (true) {
return
}
var num = 100
console.log(num)
}
fn()
练习
console.log(num)
var num = 10
f()
console.log(f2)
function f() {
console.log(n)
var n = 20
console.log(n)
}
console.log(num)
var f2 = function () {
console.log('我是f2')
}
// var num
// var n
// var f2
// function f() {
// console.log(n) // undefined
// n = 20
// console.log(n) //20
// }
// //----------------------
// console.log(num) //undefined
// num = 10
// f()
// console.log(f2) //undefined
// console.log(num) // 10
// f2 = function () {
// console.log('我是f2')
// }