zoukankan      html  css  js  c++  java
  • js学习笔记(一)

    一.变量声明 

         js中的变量是松散类型,所谓松散类型就是可以用来保存任何类型的数据。在js中,声明变量同其他语言一样,我们使用var操作符,后跟变量名:

         var isNumber;(js中未初始化的值都会保存为特殊的值 --undefined)

         有一点必须注意,用var声明的变量将会成为定义该变量的作用域中的局部变量,也就是说,如果在函数中使用var声明一个变量,那么这个变量将会在函数退出后销毁。如果是全局变量,将在浏览器退出时销毁,因此,在实际代码中,我们应尽量减少全局变量的使用。

         关于变量,有几个比较容易迷惑的地方:

    function fn(){
       var  name='lili'
    };
    fn();
    alert(name)     //js会抛出错误
    
    function other(){
      name='lili'
    }
    other();
    alert(name)   //'lili'

         在变量声明中,如果省略var ,则默认为全局变量。

    var s='name';
    function test(){
      alert(s);     //'undefined'
      var  s='aage';
      alert(s)    //'aage'
    }
    test();

          JavaScript引擎在执行的时候,当前作用域内的声明都会提升到作用域的最前面,包括变量和函数的声明,但很明显在第一个alert执行的时候,虽然声明被提升,但是此时赋值并没有执行,因此第一个alert的值为undefined(如果函数内无变量s的声明,则会到下一个作用域即全局作用域查找)。

    二.变量类型

          js中有5种简单数据类型(基本数据类型):undefined,null,boolean,number,string。还有一种复杂数据类型,object,object是由一组无序的名值对组成的。在js中,一切皆对象,这是后话。

         对于数据类型的检查,js中提供了typeof操作符,通过对数据进行typeof操作,则会返回相应类型的字符串如alert(typeof (undefined)==='undefined')//true.

         一.undefined

         一般我们可以根据一个值是否等于undefined来判断其是否定义或存在。

         二.null

         关于null,需要注意两个地方,一是typeof null 会返回‘object’,二是alert(undefined==null)会返回true。在实际代码中,我们可以通过将对象设为null来清除对象。

         三.boolean

         boolean总共包含两个值,true与false,要将一个值转化为boolean值,可以调用boolean()函数。

        关于对应表如下:

    数据类型 转化为true的值 转化为false的值
    string 非空字符串 空字符串
    number 非零数字值 0或NaN
    object 任何对象 null
    undefined ----- undefined

         四.number类型

         常见的有浮点数,整数,NaN。

         js浮点数值得最高精度为17位小数,但一般js浮点数的计算经常会出现误差,据说js并非独此一家,其他语言也有类似问题,而且js浮点数的需要内存空间为整数值得2倍。在js中可以通过isNaN来返回值是否为NaN.

         数值转化的方法有3个:Number(),parseInt(),parseFloat(),其中后两种比较常用。

         其中每个函数都有各自的转化规则,详见如下代码:

    //number转化函数
    console.log(Number('hello world'));  //NaN
    console.log(Number(''));             //0
    console.log(Number('00011'));        //11
    console.log(Number(true));           //1
    console.log(Number(undefined));      //NaN
    console.log(Number(null));           //0
    
    //parseInt
    console.log(parseInt('1234ajdkfe'));    //1234
    console.log(parseInt(' '));              //NaN
    console.log(parseInt('0xA'));             //10   十六进制
    console.log(parseInt('22.5'));            //22.5
    
    
    //parseFloat
    console.log(parseFloat('1234ajdkfe'));   //1234
    console.log(parseFloat('22.5'));          //22.5
    console.log(parseFloat('22.5.34'));        //22.5
    console.log(parseFloat('0908.5'));         //908.5

    大多数情况下,console.log要比alert更好用,不影响程序的执行,还可以随时查看执行结果。

         五.string类型

         当定义string字符类型变量时,一定要用单引号或双引号,否则js便会报错,导致程序的中断。

         把其他类型的值转化为字符串有toString和string方法,具体规则如下:

    //toString方法
    var age = 23;
    console.log(age.toString())    //'23'
    var flag=false;
    console.log(flag.toString())    //'false'
    var number=10;
    console.log(number.toString())  //'10'
    console.log(number.toString(2)) //'1010'
    console.log(number.toString(8))  //'12'
    console.log(number.toString(16))  //'a'
    
    //string
    var value1=10;
    var value2 = true;
    var value3=null;
    console.log(String(value1)) //'10'
    console.log(String(value2)) //'true'
    console.log(String(value3)) //'null'

          六.object类型

         我们可以通过var obj=new Object()     或   var obj={}来创建对象

    var person = new Object();
    person.name='micro';
    person.age = 23;
    
    var person={
        name:'mirco',
        age:23
    }

         可以通过上述两种方法来实例化对象,第二种成为对象字面量,看起来更像是封装,注意,在最后一个属性后面添加逗号,会在ie7或其他版本导致错误。

         访问对象的属性可以用点访问法或方括号语法,在使用方括号语法时,应该将要访问的属性以字符串的形式放在方括号中,方括号语法最大的优势是可以通过变量来访问属性

        如下:

    var sn='name';
    var re='place';
    var o={};
    o.sn='mike';
    o[re]='beijing';
    console.log(o)   //Object {sn: "mike", place: "beijing"}
         我们原意是为对象添加name及place属性,使用点属性不支持变量属性,而方括号是可以的。这在数组对象操作中经常会用到。
  • 相关阅读:
    模糊搜索工具fzf的安装和使用
    ubuntu状态栏位置调整
    毕业相关事项
    vimium拓展程序使用技巧
    python文件生成exe可执行文件
    解决pycharm无法识别PyQt4.QtCore的问题
    pyqt4安装以及pycharm下环境配置
    动态规划——最小编辑代价
    深度学习绘图工具
    Maven Spring JUnit 在Maven Clean Install时报
  • 原文地址:https://www.cnblogs.com/mopagunda/p/5046866.html
Copyright © 2011-2022 走看看