《JavaScript高级教程》学习笔记一、变量和数据类型

自动添加分号,但是:1.减少错误 2.方便压缩 3.提高性能

msg = 'mdzz'; msg = 1024;

var 声明变量,函数作用域

2. 数据类型

typeof可以查看变量的数据类型。 (变量/数值字面量) 返回对应数据类型字符串

1. Undefined

一个值,undefined,声明又没有初始化的变量,认值为undefined。也可以显示给变量赋值undefined

msg; >> "undefined"

 (未声明变量) 也会返回"undefined"

2. Null

一个值,为nulltypeof(null)返回'object'

3. Boolean

true和false。所有其他类型的值,都可以通过  转换成true或者false。 转换规则:

数据类型 String'')Number0和NaN ObjectnullUndefinedundefined 自动转换成Boolean,如 (variable) 相当于 ( Boolean(variable) ) 

特殊值:

  • Number.MIN_VALUE(最小值
  • Number.MAX_VALUE(最大值
  • Infinity(无穷大,超过JS数据范围,可以通过Number.POSITIVE_INFINITY得到
  • -Infinity (负无穷,Number.NEGATIVE_INFINITY
  • Number.MAX_SAFE_INTEGER(最大整数
  • Number.MIN_SAFE_INTEGER(最小整数
  • NaN
  • @H_502_146@

    任何涉及NaN的操作都返回NaN,如Nan / 10

    NaN不等于任何值,包括它本身,NaN == NaN // false

    isNaN()用来判断一个变量是否是数值

    isNaN(NaN) isNaN('10') isNaN() isNaN('true')

    数值转换:

    Number()parseInt(), parseFloat()

    Number() 转换规则:

    • truefalse会转换为10
    • null返回0
    • undefined返回NaN
    • 字符串忽略前导0,十六进制可以转换,空字符串为0,其他的不合法字符串转换NaN
    • 对象,调用valueOf()方法,为undefined调用toString()再转换字符串。
    • @H_502_146@

      parseInt()转换规则:

      • 忽略前面的空白 碰到不合法字符转换结束
        parseInt('123blue'); parseInt(''); parseInt('0xA'); parseInt(' 22.5'); parseInt(22.5); parseInt('zzz');
      • 八进制(0开头数字)有的时候转换规则不统一。
      • parseInt(number,radix)转换为指定进制。
      • @H_502_146@

        parseFloat()只转换十进制。

        5. String

        单引号(')或双引号(")包裹。两种方式没有区别。

        转义字符:

        • \n 换行
        • \t 制表
        • \b 空格
        • \r 回车
        • \\ 斜杠
        • \' 单引号
        • \" 双引号
        • @H_502_146@

           获取字符串长度

          toString()方法: 除了nullundefined值,其他数据都有toString()方法。字符串会返回一个副本。

          > 0x23< "35" > '0x23'< "0x23"

          6. Object

          JS可以通过var o = new Object()来创建对象。

          Object的每个实例都具有以下属性方法

            constructor():构造函数
          • hasOwnProperty(propertyName):用于检查当前对象是否存在某个属性。其中propertyName为字符串。
          • isPrototypeOf(Object):用于检查传入的对象是否是另一个对象的原型。
          • propertyIsEnumerable(propertyName):用于检查给定属性是否可以用for-in来枚举。其中propertyName为字符串。
          • toString():返回对象的字符串。
          • valueOf():返回对象的字符串,数值或布尔值表示。
          • @H_502_146@

            1. 一元运算符 

              递增递减操作符 ++--,对于整数,使用方法和C语言,Java等相同。但是JS中不仅可以对整数使用,对浮点数也同样适用。同时对于其他类型的变量,会转变成Number然后进行运算,不合法将返回NaN
              o = -1 i = o--;
            • 一元加和减操作符 对于数字,+-和普通的运算符号一样,同时,快速转换成Number类型。
              o = -1 i = -o;
            • @H_502_146@

              2. 位操作符

                按位非(~):操作数的负值减一。
              • 按位与(&
              • 按位或(|
              • 按位异或(^
              • 左移(<<
              • 算术右移(>>): 最左端补符号位
              • 逻辑右移(>>>):最左端补0。
              • @H_502_146@

                3. 布尔操作符

                  逻辑非(!):返回布尔值取反。通过两个取反(!!)可以达到Boolean()效果
                • 逻辑与(&&):短路操作。如果第一个操作数的布尔值为false,则返回第一个操作数,如果第一个操作数对应的布尔值为true,则返回第二个操作数。
                  (obj != 代码可以简化成下面的代码 obj && obj.doSomething();
                • 逻辑或(||):和逻辑与一样,短路操作。
                  (oldobj != =dobj; } = 代码可以简化成下面的代码 obj = oldobj || Object(); 
                • @H_502_146@

                  4. 乘性操作符

                  如果对非数值操作数进行乘性运算,将会自动转换成数值。

                  • 乘法(*
                  • @H_502_146@

                    Infinity或-Infinity

                    一个操作数是NaN返回NaN

                    Infinity和0相乘,返回NaN;

                    Infinity和非零数值,Infinity相乘,返回Infinity;

                    • 除法(/
                    • @H_502_146@

                        x/NaNNaN/xInfinity/Infinityx/0返回NaN

                      • 求模(%
                      • @H_502_146@

                        x/Infinity,x/0 => NaN

                        x(有限数值)/Infinity => x 

                        5. 加性操作符 

                        • 加法
                        • @H_502_146@

                          一个操作数是字符串,另外一个操作数将转换成字符串然后连接。

                          • 减法
                          • @H_502_146@

                            6. 关系操作符

                              小于(<),大于(>),小于等于(<=),大于等于(>=
                            • 和数值的比较,非数值操作数将转换为数值。
                            • 字符串之间按字典序比较。
                            • @H_502_146@

                              7. 相等操作符

                              • 相等(==)和不相等(!=
                              • 两个操作数会先做强制类型转换,然后再比较他们的相等性。 不同数据类型转换规则:
                              • @H_502_146@
                                • Boolean -> 0 or 1
                                • String 比较 NumberString -> Number
                                • Object 比较 其他类型,对象会取valueOf()方法返回的值
                                • null == undefined // true
                                • null == anything // false
                                • null != anything // true
                                • 如果两个操作数都是对象,则当他们指向同一个对象时相等。
                                • @H_502_146@
                                  • 全等(===)和不全等(!==
                                  • @H_502_146@
                                    • 如果两个操作数数据类型不相等返回false而不会进行类型转换。
                                    • @H_502_146@

                                      8. 条件操作符(? :) 

                                      9. 赋值操作符(=

                                      10. 逗号操作符(,):返回最后一项

                                      代码,最好也用{ }括起来。

                                      1. if语句

                                      2. do-while()语句

                                      3. while语句

                                      4. for语句

                                        在for语句中定义的变量,就算在语句结束后也仍然生效,因为var定义变量是函数作用域。

                                        count = 10 ( i = 0; i < count; i++
                                      5. for-in语句

                                        输出顺序不定。循环之前应该先确认对象的值是不是nullundefined

                                        (property
                                      6. label语句

                                        label: statement

                                        指定breakcontinue的位置。(和Java中相同。

                                      7. breakcontinue语句

                                      8. with语句

                                        with语句的作用是将代码的作用域设置到一个特定的对象中。严格模式下不允许使用。

                                        语法:with(expression) statement;

                                        qs = location.search.substring(1 hostName = url =代码 qs = search.substring(1 hostName = url =
                                      9. switch语句

                                        expression === value。

                                      函数" data-source-line="290">四、函数

                                      函数的基本语法:

                                      函数声明 函数调用

                                      调用函数时的参数可以和函数声明时参数个数不同。ECMAScript中的参数在内部使用一个数组来表示的,在函数体内可以通过

                                      arguments并不是Array的实例,但是可以通过arguments[index]获取任意一个元素。通过arguments.length可以获得参数个数。

                                      函数重载的,如果定义了名字相同的多个函数,那么将只有最后的函数生效。

                                      (arguments.length == 1+ 10 (arguments.length == 20] + num2);

                                      arguments和命名参数是同步的,但是未传递的参数不可以通过改变arguments改变。谨记arguments不是数组。

                                      console.log(num1,num3,arguments[0],arguments[1],arguments[2]); num1 = 3; arguments[1] = 4; arguments[2] = 5 console.log(num1,arguments[2]); 1,2);

                                      相关文章

                                      显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
                                      初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
                                      todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
                                      油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
                                      虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...

true false