目录
欢迎关注 『Javascript基础重点』 专栏,持续更新中
欢迎关注 『Javascript基础重点』 专栏,持续更新中
介绍一些Javascript的基础重点知识,包括并不限于函数作用域与提前声明和对象的构造函数等问题。
1. var与声明提前不可不说的故事
<script type="text/javascript">
a=1;
var b=2;
</script>
上述分别声明变量a和b,但是因为a声明时前面没有var,所以在代码执行之初,就先提前声明了a。
而b声明前带有var,表示按照代码顺序执行声明。
省流总结:没有带var的声明就是声明提前。就是在调用函数或者变量时,注意先后顺序,没有声明提前就必须在声明的代码后才能调用,而声明提前可以再声明的代码前就调用。
2. 变量的声明提前例程
* 变量的声明提前
* - 使用var关键字声明的变量,会在所有的代码执行之前被声明(但是不会赋值),
* 但是如果声明变量时不适用var关键字,则变量不会被声明提前
2.1 对于函数内外值的改变(关键区别,第二点和第三点目前没有遇到)
<script type="text/javascript">
var a = 123;
var b = 456;
//函数内使用var,局部变量,不会对外部的ab值产生影响
function mzh() {
a = 1;
b = 2;
alert("函数内" + a);
alert("函数内" + b);
}
mzh();
alert("函数外" + a); //123
alert("函数外" + b); //456
//函数内不使用var,会重置掉外部的ab全部变量
function mzh() {
a = 1;
b = 2;
alert("函数内" + a);
alert("函数内" + b);
}
mzh();
alert("函数外" + a); //1
alert("函数外" + b); //2
</script>
2.2 delete删除
在全局作用域下,使用var定义的变量不可以delete,没有var 定义的变量可以delete.也就说明隐含全局变量严格来说不是真正的变量,而是全局对象的属性,因为属性可以通过delete删除,而变量不可以。
2.3 提升变量声明
<script type="text/javascript">
//变量使用 var 定义
function qwer() {
console.log(a);
var a = "2222222222";
}
qwer(); // 控制台:“undefined”
//变量没有使用 var 定义:
function asdw() {
console.log(a);
a = "1111111111";
}
asdw(); // 控制台上:“Uncaught ReferenceError: a is not defined”
</script>
3. 函数的声明提前例程
* 函数的声明提前
* - 使用函数声明形式创建的函数 function 函数(){}
* 它会在所有的代码执行之前就被创建,所以我们可以在函数声明前来调用函数
* 使用函数表达式创建的函数,不会被声明提前,所以不能在声明前调用
<script type="text/javascript">
mzh("声明提前!我在声明代码前调用");
function mzh(message){
alert(message);
}
mzh("声明提前!我在声明代码后也能调用");
//qwer("带有var,声明没有提前!如果在var声明的函数前调用,函数不会被调用,不会有效果,如果不注释还会让后面的代码都不能生效");
var qwer=function Later_mzh(message){
alert(message);
};
qwer("带有var,声明没有提前!必须在声明函数后部分调用");
</script>
总结
大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!
版权声明:
发现你走远了@mzh原创作品,转载必须标注原文链接
Copyright 2023 mzh
Crated:2023-3-1
欢迎关注 『Javascript基础重点』 专栏,持续更新中
欢迎关注 『Javascript基础重点』 专栏,持续更新中
『1.提前声明问题,你苦恼写了js函数代码但是不会生效的问题吗?』
『2.易错点之函数形参与函数作用域的坑』
『3.了解原型对象优雅地构造函数の“JS中的Java继承” 提高运行效率,优雅地使用对象』
『4.JS垃圾回收机制简析』
『5.以toString()为例学习JS中的java方法重写』
『6.数组的常用方法与数组遍历』
『7.函数进阶之call()和apply()与arguments』
『8.Date类与利用时间戳来测试代码的执行的性能』
『9.Math类方法』
『10.包装类』
『11.字符串的方法』
『12.正则表达式介绍 邮件正则表达式写法』
『13.dom的应用』
『未完待续』