当前位置:网站首页>变量和函数的声明提前
变量和函数的声明提前
2022-08-08 13:43:00 【小小的香辛料】
1.定义
声明提前:无论是变量还是函数的声明提前都是指他们会所有代码块执行之前就进行变量或者函数的声明
2.使用规则
预备知识 window:这里首先了解一下 window 这个东西,在js中window是一个全局对象。
生命周期:从你打开该网页的那一刻到你关闭该网页的最后一刻。
作用范围:整个script即整个js代码
window对我们理解生命提前有什么用:颠覆传统认知,比如可以不用var定义变量吗?如果不用var定义他会报错吗?
事实上,我们可以不用var定义变量,此时变量==wiindow.变量(但要赋初值,否则报错),函数也是同理。这里解释window是因为下面的声明提前会见到这种不用var就定义变量的写法。
比如如下写法是完全没问题的,输出5 6:
a=5;
console.log(a);
window.a=6;
console.log(a);
变量的声明提前
使用var关键字定义变量时,会在所有代码执行之前声明变量(但不会赋值)
但是如果没有使用var关键字定义变量,则没有该特性(不使用var也可以,默认为window.变量)
// 使用var时进行了声明提前,所以不会报错,但使用a时a还未赋值,所以结果为: a=undefined
console.log("a="+a);
var a = 5;
//因为没有声明提前,则会报没有定义就使用变量的错---Uncaught ReferenceError: a is not defined
//console.log("a="+a);
//a = 5;
函数的声明提前
使用函数声明形式创建的函数---function 函数名(){},它会在所有代码执行之前创建,所以我们可以在函数声明前使用它
使用函数表达式--- var 变量 = function (){}; 创建的函数,不会被声明提前
//这种方法进行声明提前,所以不会报错,正常运行
fun1();
function fun1(){
}
//这种方法不会声明提前,所以报错---Uncaught TypeError: fun2 is not a function
// fun2();
// var fun2 = function (){
// }
完整代码为:(使用时去掉对应代码块的注释即可)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript">
/**
* 变量的声明提前
* - 使用var关键字定义变量时,会在所有代码执行之前声明变量(但不会赋值)
* 但是如果没有使用var关键字定义变量,则没有该特性(不使用var也可以,默认为window.变量)
*/
// 使用var时进行了声明提前,所以不会报错,但使用a时a还未赋值,所以结果为: a=undefined
// console.log("a="+a);
// var a = 5;
//因为没有声明提前,则会报没有定义就使用变量的错---Uncaught ReferenceError: a is not defined
// console.log("a="+a);
// a = 5;
/**
* 函数的声明提前
* - 使用函数声明形式创建的函数function 函数名(){}
* 它会在所有代码执行之前创建,所以我们可以在函数声明前使用它
* 使用函数表达式 var 变量 = function (){}; 创建的函数,不会被声明提前
*/
//这种方法进行声明提前,所以不会报错,正常运行
// fun1();
// function fun1(){
// }
//这种方法不会声明提前,所以报错---Uncaught TypeError: fun2 is not a function
// fun2();
// var fun2 = function (){
// }
</script>
</head>
<body>
</body>
</html>
这就是本文全部内容啦,很高兴你能看到这,你的访问是对我不断更新自己技术最大的支持~
边栏推荐
- (7) FlinkSQL kafka data written to the mysql way 2
- UnsatisfiedDependencyException: Error creating bean with name ‘
- (5) FlinkSQL writes socket data to mysql Method 2
- R语言使用位置索引筛选dataframe的数据列:筛选单个数据列、筛选多个数据列、列表表达式方法、矩阵式下标方法
- serialize serialize native method
- Three classic topics in C language: three-step flip method, Young's matrix, and tossing and dividing method
- 专访|360高瀚昭:ISC十年,360数字安全大脑能够“看见”什么?
- MySQL的索引和事务
- Photoshop插件-charIDToTypeID-PIStringTerminology.h-不同值的解释及参考-脚本开发-PS插件
- QWebAssembly中文适配
猜你喜欢
pip install xxx 出现 AttributeError: ‘tuple’ object has no attribute ‘read’ 错误
2022-08-04
论文理解:“Self-adaptive loss balanced Physics-informed neural networks“
难产的“第一股”:中式快餐之困
【个人总结】2022.8.7周结
哈佛大学砸场子:DALL-E 2只是「粘合怪」,生成正确率只有22%
看到这个应用上下线方式,不禁感叹:优雅,太优雅了!
MySQl表的增删查改(CRUD)
家电行业趋势:2022从三方面把握家电产品升级方向
浅学一下二叉树链式存储结构的遍历
随机推荐
R语言数据类型转换:基本数据类型的转换、将一种数据类型转化为另外一种数据类型
清华|GLM-130B:一个开放的双语预训练模型
复盘:什么是秋招提前批?什么是普通秋招?都是招聘,为啥要设置这两个招聘时间段
poj3744 Scout YYF I
SAP数据迁移需要多久?
leetcode 155. Min Stack最小栈(中等)
活动报名| StreamNative 受邀参与 ITPUB 在线技术沙龙
sample function—R language
(8) FlinkSQL custom UDF
【第2天】SQL快速入门-条件查询(SQL 小虚竹)
Knowledge points and written test questions related to shift operations, bit operations, and logical operations
难产的“第一股”:中式快餐之困
【SWT】创建自己的SWT组件
idea中项目呈现树形结构
xxd命令(反编译、二进制文件转十六进制文件)
数据解析(XPath、BeautifulSoup、正则表达式、pyquery)
R语言ggplot2可视化:使用ggpubr包的ggtexttable函数可视化表格数据(直接绘制表格图或者在图像中添加表格数据)、使用tab_add_hline函数为表头添加横线并自定义线条宽度
MySQl表的增删查改(CRUD)
poj2096 Collecting Bugs
金融行业数智化供应链管理系统:多维度评估分析供应商,赋能智能金融变革