zoukankan      html  css  js  c++  java
  • JS基本概念 Amy

    一、语法

      1.1 区分大小写

      1.2 标示符第一个字符必须是字母,下划线或者$,其他字符可以是数字,字母,下划线以及$

      1.3 单行注释//,多行注释/**/

      1.4 语句结尾尽量加上分号,因为代码压缩的时候,可能会因为语句结尾没有分号而出错

    二、变量

      2.1 ECMAScript的变量是松散型的,即可以用来保存任何类型的数据,每个变量仅仅是一个用于保存值的占位符而已,使用var来定义变量

      2.2 如果使用var操作符来定义变量,那么这个变量就成为定义该变量的作用域中的局部变量,如果不使用var操作符的变量则是全局变量

    三、数据类型

      3.1 ECMAScript有5种简单数据类型,一种复杂数据类型

      3.2 简单数据类型有Undefined、Null、Boolean、Number、String,复杂数据类型为Object,Object是由一组无序的名值对组成

      3.3 typeof操作符:由于ECMAScript是松散型的语言,因此需要一种手段来检测给定变量的数据类型,typeof操作符返回的字符串如下

        3.3.1 "undefined":该变量没有定义

        3.3.2 "boolean":该变量是布尔值

        3.3.3 "string":该变量是字符串

        3.3.4 "number":该变量是数值

        3.3.5 "object":该变量是对象或者null

        3.3.6 "function":该变量是函数

    var m;
    alert(typeof m);//undefined
    m=true;
    alert(typeof m);//boolean
    m="true";
    alert(typeof m);//string
    m=1;
    alert(typeof m);//number
    m=new Object();
    alert(typeof m);//object
    m=function(){};
    alert(typeof m);//function

      3.4 Undefined类型只有一个值就是undefined,只有在使用var操作符声明变量但未对其初始化时,该变量的值才为undefined

        3.4.1 注意没有定义和没有初始化的区别

    alert(typeof age);//undefined
    alert(age);//

      3.5 Null类型只有一个值就是null,表示一个空对象指针,定义该值的变量是准备保存对象的变量,在保存变量以前初始化为null

        3.5.1 undefined派生自null值,因此undefined==null;//true

        3.5.2 由于定义为null值的变量是准备保存object的,因此利用typeof操作符检索该变量,返回值为object

      3.6 Boolean类型只有两个值true和false

        3.6.1 所有类型的值都有与true和false相等价的值,转换的时候使用转型函数Boolean()

    数据类型 可以转换为true的值 可以转换为false的值
    Boolean true false
    String 任何非空的字符串 ""(空字符串)
    Number 任何非0的数字 0和NaN
    Object 任何对象 null
    Undefined   undefined

      3.7 Number类型使用IEEE754表示整数和浮点数

        3.7.1 八进制第一位必须是0,后面的数字必须是0到7之间的,如果超过就被当做十进制的数值来解析

        3.7.2 十六进制头两位是0x,后面是0-9和a到f,可以大小写混用

        3.7.3 浮点数:必须包含小数点,小数点后至少有一位数字,由于浮点数所需内存空间是整数的两倍,所以如果小数点后没有数字会被当做整数,同样,

          3.7.3.1 如果该浮点数本身就是一个整数,例如1.0,那么该值也被当做整数

          3.7.3.2 对于极大极小的数,利用科学计数法表示,默认ECMAScript遇到小数点后面有6位以上的浮点数,就转换为科学计数法

          3.7.3.3 浮点数的最高精度是17位,但是计算时远远不如整数,因此永远不要测试某个特定的浮点数alert(0.1+0.2);//0.30000000000000004

          3.7.3.4 最大值与最小值Number.MIN_VALUE和Number.MAX_VALUE超过最大值和最小值表示为正负无穷大Infinity和-Infinity

          3.7.3.5 判断一个数值是否位于最大值和最小值之间的函数isFinite()

        3.7.4 NaN是一个特殊的数值,表示一个本来要返回数值的操作未返回数值的情况,例如4/0,,

          3.7.4.1 任何与NaN有关的操作都返回NaN

          3.7.4.2 NaN与任何值都不相等,包括其自身

          3.7.4.3 判断某一变量是否”不是数值“的函数isNaN()

        3.7.5 数值转换的三个函数Number()可用于任何数据类型,parseInt()parseFloat()专门用于字符串转换成数值

          3.7.5.1 Number()的转换规则

            3.7.5.1.1 如果是Boolean的true和false转换为1和0

            3.7.5.2 如果是数值就直接返回

            3.7.5.3 如果是null,返回0

            3.7.5.4 如果是undefined,返回NaN

            3.7.5.5 如果是字符串,忽略掉字符串前面的0,转换成十进制,如果开头有ox,则转化成与十六进制大小相等的十进制数值,如果为"",转换为0,如果包含其他字符转换为NaN

         3.7.6 parseInt()的转换规则

          3.7.6.1 只针对字符串,

          3.7.6.2 会找到第一个非空格的字符,如果该字符不是数字以及符号,就返回NaN,空字符串也是NaN,直到解析到非数字字符为止

          3.7.6.3 如果开头的非空字符为0或者ox时,则字符串会被当做八进制或者十六进制进行解析,解析后返回的都是与其相等的十进制的数

          3.7.6.4 可以指定第二个参数为8或者16,那么该字符串会被当做八进制或者十六进制进行解析,解析结果返回的仍然是与之相等的十进制的数

        3.7.7 parseFloat()的转换规则:从第一个非空的字符开始,直到遇到一个无效的浮点数字字符为止,只解析十进制值,因此没有第二个参数,ox开头的字符返回0

      3.8 String类型:用于表示由0个或者多个Unicode字符组成的字符序列,可以用双引号或者单引号表示,没有区别

        3.8.1 length属性:返回字符串中16位字符的数目

        3.8.2 ECMAScript中的字符串是不可变的,即一旦字符串创建,它们的值是不可改变的,要改变某个变量保存的字符串,首先用包含新值的字符串填充该变量,然后销毁原来的字符串

        3.8.3 针对3.8.2的例子

    var lang="java";
    lang=lang+"script";
    //进行这步操作:首先创建一个可以容纳10个字符的新字符串,然后用"java"和"script"进行填充,填充完后,销毁字符串"java"和"script"

        3.8.4 转换为字符串的方法:toString()方法String()函数

        3.8.5 除了null和undefined外每个值都有的toString()方法,该方法会返回相应值的字符串表现

        3.8.6 toString()方法:数值调用的该方法可以传递参数:输出数值的基数,返回用参数进制表示的数值的字符串形式

        3.8.7 String()函数:由于null和undefined没有toString()方法,因此只能用String()函数

      3.9 Object类型:是一组数据和功能的集合,是所有它的实例的基础,因此它具有的任何属性和方法也都存在于更具体的对象中

        3.9.1 constructor属性:该属性保存了用于创建当前对象的函数,即当前对象的构造函数,object类型的构造函数就是Object()

        3.9.2 hasOwnProperty(属性名)方法:用于检查给定的属性是否存在于当前对象的实例中,而不是实例的原型中

        3.9.3 isPrototypeOf(对象)方法:用于检查传入的对象是否是调用该方法对象的原型

        3.9.4 propertyIsEnumerable(属性名)方法:用于检查给定属性是否可以使用for-in语句进行枚举

        3.9.5 toString()方法:返回对象的字符串表示

        3.9.6 valueOf()方法:返回对象的字符串、数值或者布尔值的表示

    四、操作符

      4.1 位操作符:用于最基本的层次上,按内存中表示数值的位来操作数值

        4.1.1 位操作只针对32位的整数:ECMAScript中数值都是以64位格式存储,但按位操作并不直接操作64位,而是先将64位转换成32位的整数,然后执行操作,操作完毕后再转回64位

        4.1.2 对于有符号的整数,前31位表示整数的数值,第32位表示数值的符号,0为正,1为负,成为符号位

        4.1.3 负数:使用二进制补码进行存储,第一绝对值的二进制,第二,取反,0->1,1->0,第三,加1

        4.1.4 计算-18的二进制表示:18=(10010)2;取反 (111...01101)2;加1 (111...01110)2

        4.1.5 我们看到的负数的二进制为:负数的绝对值的二进制码前面加上符号

    var lang=-18;
    alert(lang.toString(2));//-10010

        4.1.6 按位非(NOT)~:取反,实质:对数值的负数减1

        4.1.7 按位与(AND)&:只有都是1时菜返回1,

        4.1.8 按位或(OR)|:只要有一个是1就返回1

        4.1.9 按位异或(XOR)^:只有一个1时才返回1

        4.1.10 左移(<<移的位数):除了符号位全部向左移动,左移不影响符号位,右侧空出来的位用0填充

        4.1.11 有符号右移(>>):除了符号位全部右移,用符号位填充左侧空出来的位

        4.1.12 无符号的右移(>>>):包括符号位全部右移,0填充空白位

      4.2 布尔操作符:逻辑非!,逻辑与&&,逻辑或||

      4.3 乘法操作符:Infinity*0==NaN,Infinity*正数(包括Infinity)=Infinity,Infinity*负数(包括-Infinity)==-Infinity

      4.4 除法操作符:Infinity/Infinity=NaN

      4.5 加法操作符:-Infinity+Infinity=NaN;如果一个操作数是字符串,则是拼接字符串,例如"8"+4="84"

      4.6 减法操作符:Infinity-Infinity=NaN

      4.7 关系操作符:

        4.7.1 如果一个是数值一个是字符串,则字符串会转换成数值进行比较;

        4.7.2 如果两个都是字符串会依据字符编码进行比较,例如"23"<"3";//true

        4.7.3 任何操作数和NaN比较都是false

      4.8 相等操作符(==):先强制转换,然后再比较

        4.8.1 null==undefined

        4.8.2 NaN不等于任何值,包括其自身

        4.8.3 "5"==5

        4.8.3 全等操作符(===):两个操作数不经转换就相等"5"!==5

      4.9 逗号操作符:在用于赋值时,逗号操作符总会返回表达式中的最后一项

    var lang=(-18,2);
    alert(lang);//2

       4.10 for-in语句:一种精确的迭代语句,可以用来枚举对象的属性

    for(var name in window){//利用for-in来显示BOM中window对象的所有属性
        document.write(name+"<br/>");
    }

       4.11 label语句:定义的标签可以在将来由break或者continue语句引用,一般都与for语句等循环语句配合使用

      4.12 break语句:立即退出循环,强制继续执行循环后面的语句,continue:立即退出循环,从循环顶部继续执行

      4.13 with语句:将代码的作用域设定到一个特定的对象中

    with(location){
        document.write(hostname+"<br/>");//原本应该是location.hostname
        document.write(href+"<br/>");//原本应该是location.href
    }

     五、函数

      5.1 函数不必指定是否返回值,只要return语句后跟要返回的值即可实现返回值

      5.2 函数在执行到return语句后悔立即停止并退出,return后面的代码永远不会得到执行

      5.3 return语句不带任何返回值时,会返回undefined值,这种做法一般用在需要提前停止函数执行而又不需要返回值的情况

      5.4 ECMAScript函数不介意传递进来参数个数以及类型,因为ECMAScript中的参数在内部是用一个数组来表示的,函数接收到的始终是这个数组,至于数组中包含的内容并不关心

      5.5 可以使用arguments对象来访问参数数组,arguments[i]来访问第i+1个参数,arguments.length确定传递进来的参数的个数

      5.6 没有传递值的命名参数将被自动赋值undefined

      5.7 ECMAScript中所有的参数都是值传递,没有引用传递

      5.8 如果出现两个相同名字的函数,后者会覆盖前者

  • 相关阅读:
    .net注册iis
    hdu 1081To The Max
    hdu 1312Red and Black
    hdu 1016Prime Ring Problem
    hdu 1159Common Subsequence
    hdu 1372Knight Moves
    hdu 1686Oulipo
    hdu 1241Oil Deposits
    hdu 1171Big Event in HDU
    hdu 4006The kth great number
  • 原文地址:https://www.cnblogs.com/amy2011/p/3089355.html
Copyright © 2011-2022 走看看