程序笔记   发布时间:2019-11-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了《JavaScript高级教程》学习笔记一、变量和数据类型大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

source-line="1">一、变量和数据类型

source-line="1">1. 变量

source-line="5">JavaSript是弱类型语言,可以通过var定义任何类型变量,同时同一变量可以被赋值成不同类型。

source-line="7">JavaScript可以在语句结尾省略分号,JS会自动添加分号,但是BACkground-color: #ffff00;">最好加分号:1.减少错误 2.方便压缩 3.提高性能

msg = 'mdzz'; String msg = 1024; number

var@H_801_15@ 声明变量,函数作用域

2. 数据类型

source-line="19">JavaScript一共有5中基本数据类型,通过typeof@H_801_15@可以查看变量的数据类型。 (变量/数值字面量) 返回对应数据类型字符串

1. Undefined

source-line="23">只有一个值,undefined@H_801_15@,声明又没有初始化的变量,默认值为undefined@H_801_15@。也可以显示给变量赋值undefined@H_801_15@。

msg; >> "undefined"

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

2. Null

source-line="33">同样只有一个值,为null@H_801_15@,BACkground-color: #ffff00;">typeof(null)@H_801_15@返回'object'@H_801_15@

3. Boolean

source-line="37">两个值,true@H_801_15@和false@H_801_15@。所有其他类型的值,都可以通过 Boolean(variablE) 转换成true@H_801_15@或者false@H_801_15@。 转换规则:

source-line="40"> 数据类型 String@H_801_15@''@H_801_15@)number@H_801_15@0@H_801_15@和NaN@H_801_15@ Object@H_801_15@null@H_801_15@Undefined@H_801_15@undefined@H_801_15@ source-line="47">某些时候变量会自动转换成Boolean,如 (variablE) 相当于 ( Boolean(variablE) ) 

source-line="47">4. number

source-line="47">可以表示整数或浮点数。0开头表示八进制,0x开头表示十六进制。

特殊值:

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

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

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

isNaN(NaN) isNaN('10') false 可以转化为数数值 isNaN() false isNaN('true')

数值转换:

number()@H_801_15@,parseInt()@H_801_15@, parseFloat()@H_801_15@。

number()@H_801_15@ 转换规则:

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

parseInt()@H_801_15@转换规则:

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

parseFloat()@H_801_15@只转换十进制。

5. String

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

转义字符:

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

 获取字符串长度

BACkground-color: #ffff00;">ECMAScript中字符串是不可变的。字符串拼接将产生新的字符串。

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

> 0x23String() < "35" > '0x23'String() < "0x23"

6. Object

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

Object@H_801_15@的每个实例都具有以下属性和方法:

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

source-line="135">二、操作符

1. 一元运算符 

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

2. 位操作符

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

3. 布尔操作符

    source-line="137">
  • 逻辑非(!@H_801_15@):返回布尔值取反。通过两个取反(!!@H_801_15@)可以达到Boolean()@H_801_15@的效果。
  • 逻辑与(&&@H_801_15@):短路操作。如果第一个操作数的布尔值为false,则返回第一个操作数,BACkground-color: #ffff00;">注意:是返回操作数本身,而不是对应的布尔值! 如果第一个操作数对应的布尔值为true,则返回第二个操作数。
    (obj != { obj.doSomething(); } obj && obj.doSomething();
  • 逻辑或(||@H_801_15@):和逻辑与一样,短路操作。
    j; (oldObj != { obj =j; } { obj = ject(); } obj = oldObj || Object(); 

4. 乘性操作符

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

  • 乘法(*@H_801_15@)

Infinity@H_801_15@或-Infinity@H_801_15@;

NaN@H_801_15@返回NaN@H_801_15@;

Infinity@H_801_15@和0@H_801_15@相乘,返回NaN@H_801_15@;

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

  • 除法(/@H_801_15@)

  x/NaN@H_801_15@,NaN/x@H_801_15@,Infinity/Infinity@H_801_15@,x/0@H_801_15@返回NaN@H_801_15@。

  • 求模(%@H_801_15@)

x/Infinity@H_801_15@,x/0@H_801_15@ => NaN@H_801_15@

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

5. 加性操作符 

  • 加法

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

  • 减法

6. 关系操作符

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

7. 相等操作符

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

8. 条件操作符(? :@H_801_15@) 

9. 赋值操作符(=@H_801_15@)

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

source-line="228">三、语句

source-line="230">BACkground-color: #ffff00;">就算只有一行代码,最好也用{ }@H_801_15@括起来。

  1. if@H_801_15@语句

  2. do-while()@H_801_15@语句

  3. while@H_801_15@语句

  4. for@H_801_15@语句

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

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

    输出顺序不定。循环之前应该先确认对象的值是不是null@H_801_15@或undefined@H_801_15@。

    (property { statement }
  6. label@H_801_15@语句

    label: statement@H_801_15@

    指定break@H_801_15@或conTinue@H_801_15@的位置。(和Java中相同。

  7. break@H_801_15@和conTinue@H_801_15@语句

  8. with@H_801_15@语句

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

    语法:with(expression) statement;@H_801_15@

    qs = LOCATIOn.search.subString(1); hostName =LOCATIOn.hostName; url =LOCATIOn.href; LOCATIOn) { qs = search.subString(1); hostName = url =
  9. switch@H_801_15@语句

    {

    BACkground-color: #ffff00;">其中expression可以为任何数据类型。这里需要判断expression === value。@H_801_15@

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

source-line="291">函数的基本语法:

{ );

source-line="291">Helvetica Neue',Helvetica,Arial,sans-serif; font-size: 14px;">ECMAScript中调用函数时的参数可以和函数声明时参数个数不同。ECMAScript中的参数在内部使用一个数组来表示的,在函数体内可以通过801_15@

source-line="301">arguments@H_801_15@并不是Array@H_801_15@的实例,但是可以通过arguments[index]@H_801_15@获取任意一个元素。通过arguments.length@H_801_15@可以获得参数个数。

source-line="303">我们可以通过参数个数的判断实现重载。BACkground-color: #ffff00;">但是JavaScript中本身是没有函数重载的,如果定义了名字相同的多个函数,那么将只有最后的函数生效。

{ (arguments.length == 1{ alert(num1 + 10); } (arguments.length == 2{ alert(arguments[0] + num2); [0] is equals to num1

source-line="313">arguments@H_801_15@和命名参数是同步的,但是未传递的参数不可以通过改变arguments@H_801_15@改变。谨记arguments@H_801_15@不是数组。

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

大佬总结

以上是大佬教程为你收集整理的《JavaScript高级教程》学习笔记一、变量和数据类型全部内容,希望文章能够帮你解决《JavaScript高级教程》学习笔记一、变量和数据类型所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:
true@H_801_15@ false@H_801_15@