zoukankan      html  css  js  c++  java
  • JavaScript基础2——关于变量

    • 变量的声明                   

            变量的定义:使用var关键字来声明,区分大小写的。注意:不用var,会污染全局变量
            变量的命名规范是:字母,数字,$符和下划线构成,但是不可以以数字开始,并且变量名不可以使用关键字。

         1、声明变量

    1 <script type="text/javascript">
    2     var i=123;//使用var关键字声明变量
    3     var s="Jackie";
    4     temp="直接赋值使用变量";//如果您所赋值的变量还未进行过声明,该变量会自动声明。
    5     document.write(i+" "+s+" "+temp);
    6 </script>

         2、重新声明变量

    1 <script type="text/javascript">
    2     var i=123;//使用var关键字声明变量
    3     var i;//在重新声明该变量后,变量的值不会被重置或清除。
    4     document.write("i的值是:"+i);//i的值还是123
    5 </script>

        3、命名习惯

    变量命名都以类型前缀+有意义的单词组成,用驼峰式命名法增加变量和函式的可读性。例如:sUserName,nCount。

          前缀规范:
          每个局部变量都需要有一个类型前缀,按照类型可以分为:

    1

    2

    3

    4

    5

    6

    7

    8

    s:表示字符串。例如:sName,sHtml;

    n:表示数字。例如:nPage,nTotal;

    b:表示逻辑。例如:bChecked,bHasLogin;

    a:表示数组。例如:aList,aGroup;

    r:表示正则表达式。例如:rDomain,rEmail;

    f:表示函数。例如:fGetHtml,fInit;

    o:表示以上未涉及到的其他对象,例如:oButton,oDate;

    g:表示全局变量,例如:gUserName,gLoginTime;

       4变量的生存期

           当您在函数内声明了一个变量后(用var,不用则为污染全局),就只能在该函数中访问该变量。当退出该函数后,这个变量会被撤销。这种变量称为本地变量或 局部变量。您可以在不同的函数中使用名称相同的本地变量,这是因为只有声明过变量的函数能够识别其中的每个变量。如果您在函数之外声明了一个变量(全局变量),则页面上的所有函数都可以访问该变量。这些变量的生存期从声明它们之后开始,在页面关闭时结束。

       5、变量的思维导图

    • JavaScript的数据类型

    1、ECMAScript 有 5 种原始类型(primitive type),即 UndefinedNullBooleanNumberString
                typeof函数获取一个变量的类型:
                * undefined - 如果变量是 Undefined 类型的
                * boolean - 如果变量是 Boolean 类型的
                * number - 如果变量是 Number 类型的 (整数、浮点数)
                * string - 如果变量是 String 类型的 (采用""、'')
                * object - 如果变量是一种引用类型或 Null 类型的
                如:new Array()/ new String()...
                * funciton -- 函数类型

    Null 数据类型:可以通过给一个变量赋 null 值来清除变量的内容。Jscript中 typeof 运算符将报告 null 值为 Object 类型,而非类型 null。null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。

     1 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
     2 
     3 <head>
     4 
     5   <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
     6 
     7   <title></title>
     8 
     9   <script type="text/javascript">
    10 
    11       alert(typeof null);
    12 
    13   </script>
    14 
    15 </head>
    16 
    17 <body>
    18 
    19 </body>
    20 
    21 </html>

     

     

    Undefined数据类型:如下情况将返回 undefined 值:对象属性不存在,声明了变量但从未赋值。null和undefined的区别:

    1 alert(typeof undefined); //output "undefined"
    2 
    3 alert(typeof null); //output "object"
    4 
    5 alert(null == undefined); //output "true"

    ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的。

    1 alert(null === undefined); //output "false"
    2 
    3 alert(typeof null == typeof undefined); //output "false"

    null与undefined的类型是不一样的,所以输出"false"。而===代表绝对等于,在这里null === undefined输出false

            附上十八哥上课截图:

                         

     2、引用数据类型(对象、数组)
           引用类型通常叫做类(class),也就是说,遇到引用值,所处理的就是对象。Object 对象自身用处不大,不过在了解其他类之前,还是应该了解它。因为 ECMAScript 中的 Object 对象与 Java 中的 java.lang.Object 相似,ECMAScript 中的所有对象都由这个对象继承而来,Object 对象中的所有属性和方法都会出现在其他对象中,所以理解了 Object 对象,就可以更好地理解其他对象

         javascript引用数据类型是保存在堆内存中的对象,JavaScript不允许直接访问堆内存空间中的位置和操作堆内存空间,只能通过操作 对象在栈内存中的引用地址。所以引用类型的数据,在栈内存中保存的实际上是对象在堆内存中的引用地址。通过这个引用地址可以快速查找到保存在堆内存中的对象。下面我们来演示这个引用数据类型赋值过程

     

    自然,给obj2添加name属性,实际上是给堆内存中的对象添加了name属性,obj2和obj1在栈内存中保存的只是堆内存对象的引用地址,虽然也是拷贝了一份,但指向的对象却是同一个。故而改变obj2引起了obj1的改变。

    基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置。而引用类型值则是指那些保存在堆内存中的对象,即变量中保存的实际上只是一个指针,这个指针指向内存中的另一个位置,该位置保存对象。

    简而言之,堆内存存放引用值,栈内存存放固定类型值。

    在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值。原始值存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。引用值存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处。

     1 <script type="text/javascript”>
     2 var box = new Object(); //创建一个引用类型
     3 
     4 var box = "lee";  //基本类型字符串
     5 
     6 box.age = 23;  //基本类型值添加属性很怪异,因为只有对象才可以添加属性
     7 
     8 alert(box.age); //不是引用类型,无法输出
     9 
    10 </script>

    3、类型转换:
            使用:Number()、parseInt() 和parseFloat()做类型转换。Number()强转一个数值(包含整数和浮点数)。*parseInt()强转整数,*parseFloat()强转浮点数;函数isNaN()检测参数是否不是一个数字( is not a number);Boolean(value) - 把给定的值转换成 Boolean 型;String(value) - 把给定的值转换成字符串。

          4、数据类型思维导图

       

  • 相关阅读:
    hdoj 2803 The MAX【简单规律题】
    hdoj 2579 Dating with girls(2)【三重数组标记去重】
    hdoj 1495 非常可乐【bfs隐式图】
    poj 1149 PIGS【最大流经典建图】
    poj 3281 Dining【拆点网络流】
    hdoj 3572 Task Schedule【建立超级源点超级汇点】
    hdoj 1532 Drainage Ditches【最大流模板题】
    poj 1459 Power Network【建立超级源点,超级汇点】
    hdoj 3861 The King’s Problem【强连通缩点建图&&最小路径覆盖】
    hdoj 1012 u Calculate e
  • 原文地址:https://www.cnblogs.com/Jackie0714/p/4940450.html
Copyright © 2011-2022 走看看