从零开始学JavaScript三(变量)

 一、变量

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259468.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DES加密过程例解

DES加密算法是最被广泛使用的对称加密算法&#xff0c;通过示例来演示DES、TribleDES&#xff08;3Key&#xff09; DES-ECB&#xff1a; 按8字节为单位进行加密&#xff0c;不足8字节补0key&#xff1a; 1111111111111111indata: 2222222222222222 OutData: 950973182317F8…

linux在双系统中消失了,双系统重新安装windows后,ubuntu选项消失

1、首先用LiveCD进入ubuntu2、打开终端&#xff0c;&#xff0c;输入&#xff1a;fdisk -l 查看自己linux的分区情况&#xff0c;我的分了4个区&#xff0c;swap&#xff0c;boot&#xff0c;/&#xff0c;home&#xff0c;对应的分别是&#xff1a;/dev/sda9 swap…

Cydia源局域网化

2019独角兽企业重金招聘Python工程师标准>>> 步骤 在网址根目录创建文件夹cydia&#xff0c;把你的deb文件放到 cydia/debs/ 文件夹下。在终端cd进入cydia文件夹输入命令&#xff1a;dpkg-scanpackages debs /dev/null > Packages输入命令&#xff1a;tar zcvf P…

前缀++ 后缀++ 运算符重载

下面例子程序中 const Fraction operator (int) 中 int不过是个哑元&#xff08;dummy&#xff09;,是永远用不上的 它只是用来判断&#xff0b;&#xff0b;是prefix 还是 postfix 记住&#xff0c;如果有哑元&#xff0c;则是postfix,否则&#xff0c…

固定资产调整对资产折旧的影响

固定资产折旧计提方法 一、原值增加&#xff1a; 1、已摊销资产&#xff1a; 摊销调整时间设在当期&#xff1a;(1078135) 在进行原值增加后&#xff0c;摊销日期不变时&#xff0c;折旧在当月体现。 每月新增月折旧调增金额*(1-残值率)/(折旧年限*12-已提折旧月份的个数) 例&a…

linux系统中 库分为静态库和,Linux系统静态库与共享库

8种机械键盘轴体对比本人程序员&#xff0c;要买一个写代码的键盘&#xff0c;请问红轴和茶轴怎么选&#xff1f;This article mainly introduces the statics library and shared library on Linux and has done some experiments for better comprehension.Static library&am…

软件工程概论作业01

软件工程作业01 写一个能自动生成三十道小学四则运算题目的 “软件”&#xff0c;要求&#xff1a;除了整数以外&#xff0c;还要支持真分数的四则运算&#xff08;需要验证结果的正确性&#xff09;、题目避免重复、可定制出题的数量。 思路&#xff1a;随机生成两个数进行计算…

成员指针运算符 .* 和 -*

转载&#xff1a; http://www.groad.net/bbs/thread-5548-1-1.html 有一种特殊的指针叫做成员指针&#xff0c;它们通常指向一个类的成员&#xff0c;而不是对象中成员的特定实例。 成员指针并不是真正的指针&#xff0c;它只是成员在对象中的偏移量&#xff0c;它们分别是&am…

捕捉Entity framework 6的详细异常提示

采用 try{}catch (Exception e){throw;}不能捕捉到详细异常提示, e.message的内容为"Validation failed for one or more entities. See EntityValidationErrors property for more details." 如果需要获取详细的异常提示,采用 1 try2 {3 return…

8.16——熟悉安装linux系统

一、linux的版本——CentOS CentOS&#xff08;Community ENTerprise Operating System&#xff09;是Linux发行版之一&#xff0c;它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码&#xff0c;因此有些要求高度稳定性的服…

linux中设置默认权限的命令,Linux默认权限掩码

Linux教程Linux教程&#xff1a;http://www.fdlly.com/m/linux文章目录默认权限掩码设置权限掩码以文字的方式设置权限掩码查看系统当前的权限掩码默认权限掩码当我们创建文件或目录时&#xff0c;系统会自动根据权限掩码来生成预设权限&#xff1b;默认情况下的umask值是022(可…

percona-toolkit工具包安装

percona-toolkit工具包同percona-xtrabackup一样都是用Perl写的工具包&#xff0c;percona-toolkit工具包是一组高级的管理mysql的工具包集&#xff0c;可以用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务&#xff0c;在生产环境中能极大的提高效率&#xff0c;安装…

C++允许重载的运算符和不允许重载的运算符

C中绝大部分的运算符允许重载&#xff0c;具体规定见表10.1。 表10.1 C允许重载的运算符双目算术运算符 (加)&#xff0c;-(减)&#xff0c;*(乘)&#xff0c;/(除)&#xff0c;% (取模) 关系运算符 (等于)&#xff0c;! (不等于)&#xff0c;< (小于)&#xff0c;> (大…

Google Mesa概览

Google Mesa的文章&#xff1a;https://research.google.com/pubs/pub42851.html https://gigaom.com/2014/08/07/google-shows-off-mesa-a-super-fast-data-warehouse-that-runs-across-data-centers/ 为什么未来的Hadoop是实时的&#xff1a; https://gigaom.com/2013/03/0…

C++数组参数应用方式探讨(转)

对于经验丰富的编程人员来说&#xff0c;C编程语言应该是他们经常使用于程序开发的一种实用性语言。那么&#xff0c;在C中&#xff0c;C数组参数永远不会按值传递。它是传递第一个元素&#xff08;准确地说是第0个&#xff09;的指针。 例如&#xff0c;如下声明&#xff1a; …

一篇关于兼容问题的基础总结

1.添加兼容文件(以 es5-shim 为例) 方法一&#xff1a; <script src"https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.5.7/es5-shim.min.js"></script>在你的开发中&#xff0c;在需要为他做兼容的文件引入改文件 方法二(以模块引入)&#xff1a; 在…

假如生活欺骗了你

假如生活欺骗了你&#xff0c; 不要悲伤&#xff0c;不要心急&#xff01; 忧郁的日子里需要镇静&#xff1a; 相信吧&#xff0c;快乐的日子将会降临。 心儿永远向往着未来&#xff1b; 现在却常是忧郁&#xff0c; 一切都将会过去&#xff1b; 而那过去了的&#xff0c…

linux编译mmc驱动,Embeded linux之MMC驱动

一、注册平台设备platform_device_register(&usr_mci_device);二、填写平台设备结构体static struct platform_device usr_mci_device {.name "xxx",.id 0,.dev {.release usr_mci_platdev_release,.dma_mask &usr_mmc_dmama…

redis windows下的环境搭建

先说下安装吧&#xff01;感觉这东西跟mongodb差不多&#xff0c;安装和布置挺简单&#xff0c;下载地址&#xff1a;https://github.com/dmajkic/redis/downloads 下载下来的包里有两个&#xff0c;一个是32位的&#xff0c;一个是64位的。根据自己的实情情况选择&#xff0c;…

application/json 四种常见的 POST 提交数据方式

四种常见的 POST 提交数据方式 HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据&#xff0c;本文主要讨论 POST 提交数据的几种方式。 我们知道&#xff0c;HTTP 协议是以 ASCII 码传…