JavaScript变量提升和严格模式实例分析

作者:Cairo960918 时间:2024-04-17 10:35:52 

本文实例讲述了JavaScript变量提升和严格模式。分享给大家供大家参考,具体如下:

1.什么是变量提升

所谓的变量提升指的是:函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体(作用域)的最顶部。

下面我们通过一个例子来详细说明一下。


//变量声明在使用之前
var x;
console.log(x);//undefined
//变量声明在使用之后
console.log(y);//undefined
var y;
//上面的式子可以写成下面的样子
/*
变量提升:把x,y提升到顶部
var x;
var y;
console.log(x);
console.log(y);
*/

从上面这个例子我们可以看到:

①变量的使用有两种形式,先声明再使用或者先使用后声明;

②无论是哪一种形式都不影响变量的使用,这是因为有变量提升的存在,每一个你定义的变量都会被提升到顶部,也就是函数最开始的部分,这就变成了你在使用变量时其实都已经声明变量了。

下面我举一个经典的例子来更好地理解一下。


//经典案例:window表示全局,判断条件(变量a是否有在全局下)是在变量a声明之前
if(a in window){
 var a;
 console.log('a in window');
}else{console.log('a not in window');}
//a in window
//相当于:
/*
var a; //a被提升到顶部
if(a in window){
 console.log('a in window');
}else{console.log('a not in window');}
*/

这是变量提升的一个很好的例子,可以看到打印出来的结果表明,在我们使用a之前,声明变量a就被提升到顶部。

但是,要注意的是JavaScript 只有声明的变量会提升,初始化的不会。


console.log(c);//undefined
var c = 1; //初始化
/*
var c;
console.log(c);
c = 1;
*/
var d;//声明d
d = 1;//初始化
console.log(d);//1

上面的c打印结果为undefined,这是因为提升的只有声明变量var c,而初始化的c=1没有提升而在使用之后。

为了避免上面出现的变量提升的问题,通常我们在每个作用域开始前声明我们要使用的变量。

2.严格模式

严格模式的写法就是在代码编写之前加上"use strict",严格模式要求你不能使用未声明的变量,否则会报错。

例如:


"use strict"; //严格模式
m =1;
console.log(m);//m is not defined
//在严格模式下,因为m未被声明就被使用或者初始化则会报错
var n = 1;
console.log(n);//1

但是在没有使用严格模式的时候:


m =1;
console.log(m);//1
//在非严格模式下,同样这样写就不会报错

虽然还是没有声明变量m但还是可以使用的。

所以,还是建议大家尽可能得使用严格模式来编写javascript代码,以消除Javascript语法的一些不合理、不严谨之处,让自己成为一个更优秀的程序员。

希望本文所述对大家JavaScript程序设计有所帮助。

来源:https://blog.csdn.net/Cairo960918/article/details/85028188

标签:JavaScript,变量提升,严格模式
0
投稿

猜你喜欢

  • python Selenium实现付费音乐批量下载的实现方法

    2023-02-28 17:26:58
  • 用色彩打造专业的视觉效果

    2010-09-25 19:04:00
  • python基础之内置函数

    2022-02-28 09:15:58
  • ES6记录异步函数的执行时间详解

    2024-04-10 16:18:56
  • MySQL实现配置主从复制项目实践

    2024-01-15 16:54:20
  • SQL 截取字符串应用代码

    2024-01-21 08:53:14
  • 关于php unset对json_encode的影响详解

    2023-07-06 08:33:52
  • golang db事务的统一封装的实现

    2023-07-02 21:01:51
  • laravel 实现阿里云oss文件上传功能的示例

    2023-06-13 20:39:26
  • Python dict的常用方法示例代码

    2023-05-17 09:58:15
  • mac系统安装Python3初体验

    2023-11-27 07:33:16
  • 深入理解golang的异常处理机制

    2024-02-04 10:02:37
  • PHP中关于php.ini参数优化详解

    2024-05-13 09:51:31
  • 如何提高网页的维护效率

    2009-03-01 11:33:00
  • PyCharm如何设置Console控制台输出自动换行

    2022-05-22 03:42:18
  • Python抓包并解析json爬虫的完整实例代码

    2021-12-17 14:54:32
  • 通过asp程序来创建access数据库

    2011-04-02 11:17:00
  • Python 函数返回值的示例代码

    2021-10-12 19:30:23
  • python中lambda函数 list comprehension 和 zip函数使用指南

    2021-08-28 22:16:21
  • Python爬取用户观影数据并分析用户与电影之间的隐藏信息!

    2022-09-09 23:19:47
  • asp之家 网络编程 m.aspxhome.com