文档章节

js(javascript)小谈变量声明(显隐声明,声明提前)

哟猫Intry
 哟猫Intry
发布于 2016/06/16 16:22
字数 367
阅读 4
收藏 0
点赞 0
评论 0
var a=5;
function fun(){
    a=0;         
    alert(a);         //0
    alert(this.a);    //5
    var a; 
    alert (a);        //0
    
}
fun();

以上代码  将会输出  0 ,5,0.
首先在js中我们的变量声明赋值分为两个部分 。
1.变量的声明 var a;2.变量的赋值 a=2;
但是一般我们会把变量的声明和赋值写在 一起 也就是  var a=2;
而在js 中变量的声明会被提前到 当前作用域的开始,也就是说以上代码和下面代码是等价的

var a=5;
function fun(){
    var a;           //变量的声明提前
    a=0;              //赋值语句保持不变
    alert(a);         //0
    alert(this.a);    //5
    alert (a);        //0
    
}

所以 alert(a)其实是输出的局部变量 a的值,this.a 则是全局变量a 的值,以上是介绍变量的声明提前
下面我们的代码将如下修改

var a=5;
function fun(){
    a=0;              
    alert(a);         //0
    alert(this.a);    //0
    alert (a);        //0
    
}

这时候我们所有的输出值都为0;
我们声明变量分为显示声明(var a)和隐式声明 (a);
当我们一个函数内部的局部变量采用隐式声明的方式,那么这个变量就不在是一个局部变量,而是一个全局变量,
所以相当于 给全局变量a 赋值 0;这样输出的全部是a。

点击进入JS强化教程:http://www.h5edu.cn/htm/step/h5edu_44.html

© 著作权归作者所有

共有 人打赏支持
哟猫Intry
粉丝 0
博文 46
码字总数 31138
作品 0
昌平
【前端工程师手册】JavaScript之作用域

【前端工程师手册】JavaScript之作用域 什么是作用域 来一段《你不知道的JavaScript-上卷》中的原话: 几乎所有编程语言最基本的功能之一,就是能够储存变量当中的值,并且能在之后对这个 值...

优惠券活动 ⋅ 05/17 ⋅ 0

编写可维护的JavaScript

软件生命周期中80%的成本都消耗在了维护上;而且几乎所有的维护者都不是代码的直接开发人。如何让自己写的代码让别人阅读起来更高效?当然是写代码的时候注入一些规范。那么在Javascript中有...

Jouryjc ⋅ 06/12 ⋅ 0

前端基础(二):变量声明的6种方法

字数:2869 阅读时间:10分钟 最新的ECMAScript规范中,变量声明有var、function、let、const、import、class六种方法。 var 语法: var varname [= value1 [, vaname1[,valname2 ...]]]; 对...

老司机带你撸代码 ⋅ 06/09 ⋅ 0

这一次,我们换种姿势学习 javascript

前言 《你不知道的 javascript》是一个前端学习必读的系列,让不求甚解的JavaScript开发者迎难而上,深入语言内部,弄清楚JavaScript每一个零部件的用途。本书介绍了该系列的两个主题:“作用...

程序员解决师 ⋅ 05/29 ⋅ 0

深入浅出JS - 变量提升(函数声明提升)

前言 在我们的日常工作中,变量无处不在。更加深入的去了解它,能够使得自己的JS水平更上一层楼, 从变量提升这个小知识点着手,让我们一起来深入了解JS吧! 变量提升的小栗子 分析原因 JS引...

秋秋秋丷 ⋅ 05/17 ⋅ 0

JavaScript中的变量提升(Hoisting)

译者按: let和var对于变量提升的影响不同。 原文: What is Hoisting😰😰 in JavaScript 译者: Fundebug 为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于...

Fundebug ⋅ 05/29 ⋅ 0

JS学习系列 07 - 标签声明(Label Statement)

1. 引言 假设有这么一道题: 我想要当 j = 2 的时候就退出所有的for语句,打印最后的 done ,你会怎么做? 可能有的同学会想到这样: 这样可以实现,但是又多写了一个函数,那么有没有别的办...

liuxuan ⋅ 05/30 ⋅ 0

js的变量提升(hoisting)

js的变量提升最近看了js的文档和教程,知道了js有变量作用域和变量提升这个概念。 方法和{}里,没有var申明的变量,默认是全局的变量,或者是上一级作用域可以访问的变量。 这个在其他语言里...

清天君 ⋅ 05/14 ⋅ 0

【译】【nodeschool】【scope-chains-closures】作用域

作用域链与闭包工作 作用域,作用域链,闭包以及垃圾回收它们有一个共同点:那就是它们通常都是手动执行的。闭包实际上是如何工作的?垃圾回收在什么时候发生?作用域链到底是什么? 通过这次...

小草先森 ⋅ 05/14 ⋅ 0

ECMAScript 学习笔记(2)--基本类型及语法相关

1、变量名区分大小写; 注意代码块的概念。 变量分为原始值和引用值:原始值存储在栈,引用值存储在堆(引用值一般是一个指针或对象名、函数名)。在C语言中编译的程序占用的内存分为以下几个...

wx599c47c7bdcad ⋅ 05/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

MySQL 数据库设计总结

规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎。 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节...

OSC_cnhwTY ⋅ 56分钟前 ⋅ 0

多线程(四)

线程池和Exector框架 什么是线程池? 降低资源的消耗 提高响应速度,任务:T1创建线程时间,T2任务执行时间,T3线程销毁时间,线程池没有或者减少T1和T3 提高线程的可管理性。 线程池要做些什...

这很耳东先生 ⋅ 今天 ⋅ 0

使用SpringMVC的@Validated注解验证

1、SpringMVC验证@Validated的使用 第一步:编写国际化消息资源文件 编写国际化消息资源ValidatedMessage.properties文件主要是用来显示错误的消息定制 [java] view plain copy edit.userna...

瑟青豆 ⋅ 今天 ⋅ 0

19.压缩工具gzip bzip2 xz

6月22日任务 6.1 压缩打包介绍 6.2 gzip压缩工具 6.3 bzip2压缩工具 6.4 xz压缩工具 6.1 压缩打包介绍: linux中常见的一些压缩文件 .zip .gz .bz2 .xz .tar .gz .tar .bz2 .tar.xz 建立一些文...

王鑫linux ⋅ 今天 ⋅ 0

6. Shell 函数 和 定向输出

Shell 常用函数 简洁:目前没怎么在Shell 脚本中使用过函数,哈哈,不过,以后可能会用。就像java8的函数式编程,以后获取会用吧,行吧,那咱们简单的看一下具体的使用 Shell函数格式 linux ...

AHUSKY ⋅ 今天 ⋅ 0

单片机软件定时器

之前写了一个软件定时器,发现不够优化,和友好,现在重写了 soft_timer.h #ifndef _SOFT_TIMER_H_#define _SOFT_TIMER_H_#include "sys.h"typedef void (*timer_callback_function)(vo...

猎人嘻嘻哈哈的 ⋅ 今天 ⋅ 0

好的资料搜说引擎

鸠摩搜书 简介:鸠摩搜书是一个电子书搜索引擎。它汇集了多个网盘和电子书平台的资源,真所谓大而全。而且它还支持筛选txt,pdf,mobi,epub、azw3格式文件。还显示来自不同网站的资源。对了,...

乔三爷 ⋅ 今天 ⋅ 0

Debian下安装PostgreSQL的表分区插件pg_pathman

先安装基础的编译环境 apt-get install build-essential libssl1.0-dev libkrb5-dev 将pg的bin目录加入环境变量,主要是要使用 pg_config export PATH=$PATH:/usr/lib/postgresql/10/bin 进......

玛雅牛 ⋅ 今天 ⋅ 0

inno安装

#define MyAppName "HoldChipEngin" #define MyAppVersion "1.0" #define MyAppPublisher "Hold Chip, Inc." #define MyAppURL "http://www.holdchip.com/" #define MyAppExeName "HoldChipE......

backtrackx ⋅ 今天 ⋅ 0

Linux(CentOS)下配置php运行环境及nginx解析php

【part1:搭建php环境】 1.选在自己需要安装的安装包版本,wget命令下载到服务器响应目录 http://php.net/releases/ 2.解压安装包 tar zxf php-x.x.x 3.cd到解压目录执行如下操作 cd ../php-...

硅谷课堂 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部