JavaScript初学入门之预解析(案例细讲)

本文深入探讨了JavaScript中的两个预解析坑点,包括变量提升和函数表达式。通过四个案例分析了如何在不同情况下导致`undefined`和作用域混淆的问题,强调了正确理解和使用变量声明与函数定义的重要性。对于前端开发者来说,理解这些概念对于避免运行时错误至关重要。
摘要由CSDN通过智能技术生成

预解析

两个坑

坑1

//undefined

console。log(num);
var num = 10;

相当于以下代码

var num;
console.log(num);
num = 10;

前两步造成了undefined

坑2

//报错

fn();
var fn = function(){
	console.log(22);

相当于以下代码

var fn;
fn();
var fn = function(){
	console.log(22);

函数表达式
调用必须写在函数表达式的下面
在这里插入图片描述

案例

案例一

var num = 10;
fun();
function fun(){
    console.log(num);
    var num = 20;
}

相当于执行以下代码

var num;

function fun(){
	var num;
    console.log(num);
    num = 20;
}
num = 10;
fun();

输出结果就是undefined

案例二

var num = 10;

function fn(){
	console.log(num);
	var num = 20;
	console.log(num);
}
fn():

相当于执行以下代码

var num;
function fn(){
	var num;
	console.log(num);
	num = 20;
	console.log(num);
}
num = 10;
fn():

输出结果:前一个num undefined;后一个num 20

案例三

var a = 10;
f1();
function f1(){
	var b = 9;
	console.log(a);
	console.log(b);
	var a = '123';
}

相当于执行以下代码

var a;
function f1(){
	var b;
	var a;
	b = 9;
	console.log(a);
	console.log(b);
	a = '123';
}
a = 10;
f1();

输出结果:a是 undefined;b = 9

案例四

f1();
console.log(c);
console.log(b);
console.log(a);
function f1(){
	var a = b = c = 9;
	console.log(a);
	console.log(b);
	console.log(c);
}

相当于执行以下代码

function f1(){
	var a = b = c = 9;
	//相当于var a = 9;b = 9;c = 9;
	//b 和 c直接赋值,没有var声明,当全局变量看
	console.log(a);
	console.log(b);
	console.log(c);
}
f1();
console.log(c);
console.log(b);
console.log(a);

输出结果:里面abc都是9
外面c和b都是9,a报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空LA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值