一、变量

ECMAscript变量是松散型变量,所谓松散型变量,就是变量名称可以保存任何类型的数据,每个变量仅仅是一个用于保存值的占位符。

定义变量时要使用var操作符

如:

var message;
/*定义一个名为message的变量,该变量可以用来保存任何值,未初始化的变*量会保存一个特殊的值-undefined
*/

二、局部变量

可以声明变量里同时初始化

function test(){var message='hello';  //定义局部message变量,并初始值为helloalert(message);       //将message内容弹出
    }test();
</script>

错误的写法

function test(){var message='hello';  //定义局部message变量,并初始值为hello
    }test();
alert(message);       //错误

由以上两个例子可以看出,如果在一个函数中使用var 定义一个变量,那么该变量在函数退出后会被销毁

三、定义全局变量

function test(){message='hello';  //全局message变量,并初始值为hello
    }test();
alert(message);       //hello

这里因为省略了var,因而message就成了全局变量,这样只要调用过一次test()函数,这个变量就有了定义,就可以在函数外部的任何地方被访问

省略var 定义变量:只要调用一次定义该变量的函数,全局范围内都可访问该变量。这种定义变量的方法也被成为隐式声明

四、作用域和范围

<SCRIPT  type="text/javascript">
//定义一个输出函数
function outPut(s){
document.writeln(s);
}
//全局变量
var i=0;
//定义外部函数
function outer(){
//访问全局变量
outPut(i); // 0
//定义一个类部函数
function inner(){
//定义局部变量
var i = 1;
// i=1; 如果用隐式申明 那么就覆盖了全局变量i
outPut(i); //1
}
inner();
outPut(i); //0
}
outer();
</SCRIPT> 

结果:0,1,0

<script type="text/javascript">function demoFunction(s){ document.writeln(s)
} var i=0; function test(){ demoFunction(i); function innerFunction(){ demoFunction(i); var i=1; demoFunction(i);} innerFunction(); demoFunction(i);
}
test();
</script>

结果:0 undefined 1 0

JS函数体中声明的本地变量在整个函数中都有效,因此在上面代码中var i = 1 ;在inner函数中都有效,实际上显式声明的变量i是在预编译时就已经编译到调用对象中了,不同于隐式声明变量在解释时才被定义为全局变量,只是在调用outPut(i)时,还没有将它初始化变量,此时的本地变量i是未赋值变量,而不是未定义变量,因此输出了undefined。上面的代码等效于下面代码:

function inner(){
var i; //定义但不赋值
outPut(i); //undefiend
i=1;
outPut(i); //1
} 

转载于:https://www.cnblogs.com/liunanjava/p/4237677.html

从零开始学JavaScript三(变量)相关推荐

  1. 从零开始学架构三 高性能

    从零开始学架构三 高性能 读写分离 读写分离的基本实现是: 数据库服务器搭建主从集群,一主一从.一主多从都可以. 数据库主机负责读写操作,从机只负责读操作. 数据库主机通过复制将数据同步到从机,每台数 ...

  2. python从0开始学编程课件_小白从零开始学编程(三)--python基本概念

    前言 从2020年3月份开始,计划写一系列文档--<小白从零开始学编程>,记录自己从0开始学习的一些东西. 第一个系列:python,计划从安装.环境搭建.基本语法.到利用Django和F ...

  3. 从零开始学JavaScript一(简介)

    概要:JavaScript的组成. 各个组成部分的作用 .   一.JavaScript是一种专为与网页交互而设计的脚本语言,它的的组成  Javascript  ECMAScript(核心) DOM ...

  4. 从零开始学python网络爬虫-从零开始学Python 三(网络爬虫)

    本章由网络爬虫的编写来学习python.首先写几行代码抓取百度首页,提提精神,代码如下: importurllib.request file=urllib.request.urlopen(" ...

  5. 从零开始学java-(三)for ZCL:java基本数据类型

    上一篇文章最后我们留了几个问题,下面来解答,并解释一下为什么! 1,修改HelloWrold.java文件编译之后,出现什么?怎么看出现的东西? 如果你做了修改,根据每个人修改的不同,javac编译的 ...

  6. 从零开始学安全(三)●黑客常用的windows端口

    端口可选1-65536 1-1024 预保留端口 留给windows系统服务的 下面是常见的端口对应的服务 1 TCP Port Service Multiplexer 传输控制协议端口服务多路开关选 ...

  7. php图片木马抓鸡,从零开始学安全(三十八)●cobaltstrike生成木马抓肉鸡

    链接:https://pan.baidu.com/s/1qstCSM9nO95tFGBsnYFYZw 提取码:w6ih 上面是工具 需要java jdk 在1.8.5 以上  实验环境windows ...

  8. 从零开始学设计模式(四):工厂模式(Factory Pattern)

    作者平台: | CSDN:blog.csdn.net/qq\_4115394- | 掘金:juejin.cn/user/651387- | 知乎:www.zhihu.com/people/1024- ...

  9. 从零开始学 Web 之 JavaScript(三)函数

    大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...

最新文章

  1. python在哪下载-python在哪里下载
  2. ESP32彩屏成为HMI这条GAI最靓的仔--8月27日启明云端携手乐鑫为你共述ESP32时下最IN进阶玩法--以简驭繁,AI语音、彩屏尽显锋芒
  3. opencv学习笔记10:阈值分割
  4. Servlet使用适配器模式进行增删改查案例(IDeptService.java)
  5. 四色原型图进行业务建模的思考
  6. pc版android sd卡,告别瓶颈:安卓闪存(SD卡)I/O优化
  7. 如何有效的使用 for循环和Iterator遍历
  8. 容器编排技术 -- Windows Server 容器
  9. js判断IE浏览器及版本
  10. 2507-AOP- springboot中使用-使用注解方式
  11. LINUX环境变量environ
  12. python爬虫框架scrapy学习图片下载
  13. df 查看显示所有磁盘的信息
  14. 常见的HTTP Headers有哪些?
  15. python什么证书最有价值,python哪个证书含金量高
  16. 《互联网保险业务监管办法》(征求意见稿)全文无删减
  17. 【安卓】【Dimens】适配文件创建
  18. 写个dump_stack【转】
  19. i513400f参数 i5 13400f性能怎么样酷睿i5 13400f属于什么水平
  20. 测试策略和测试计划的区别

热门文章

  1. 故乡的路:十位少数民族摄影师联展
  2. verilog中的综合与不可综合
  3. vue根据url获取内容axios_vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据...
  4. python工作目录_如何使用python 3获取当前工作目录?
  5. 单选按钮带文字_计算机二级MS office高级应用历年真题操作题文字解析
  6. matlab安装程序无法启动jvm_天呀!JVM居然还有2两种运行模式
  7. python列表索引超出范围 等于啥_python - IndexError:列表分配索引超出范围,Python
  8. mfc读取txt文件并显示_Python入门丨文件读写
  9. android 弹出网格菜单,在android中的recyclerView中显示弹出按钮的确...
  10. python3 sleep 并发_python异步编程之asyncio(百万并发)