欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaScript学习笔记·基本概念

程序员文章站 2022-06-03 16:17:59
...

本次笔记只摘录JavaScript和已学习语言不同点或是遗漏知识点。

1.数据类型

  •  Boolean,String,Number,Object,Undefined,Null
  •  Undefined值为Null的派生值 (Null==Undefined)为true
  •  Number类型使用了IEEE754格式来表示整数和浮点数。由于保存浮点数需要的内存空间是保存整数的两倍,ECMAScript会将浮点数转换为整数值。例如:
var floatNum1 = 1.;      //小数点后没有数字,解析为1
var floatNum2 = 10.0;    //整数,解析为10
  •  浮点数最高精度是17位小数,但进行算数计算时精度远远不如整数,0.1+0.2≠0.3,会产生 舍入误差。这是使用基于IEEE754数值的浮点计算的通病。
  • NaN(Not a Number)是一个特殊的数值。用于表示一个本来要返回数值的操作数未返回数值的情况(避免抛出错误)。

任何涉及NaN的操作都会返回NaN。

NaN与任何值都不相等包括它本身。

isNaN()函数接受任何类型的参数,函数用于判断这个参数是否“不是数值”

alert(isNaN("10"));          //false,可以转换成数值10
alert(isNan("blue"));        //true,不是数值
  • 数值转换

Number()函数:

如果参数是对象,调用valueOf()方法,确定该方法返回值是否可以转换为数值。如果转换结果为NaN,则调用对象的toString()方法,再测试返回值。

例如:

var num = Number("Hello World!");    //NaN

parseInt()函数:

它会忽略字符串前面的空格,直到找到第一个非空格字符。如果第一个字符不是数字或者负号,parseInt()会返回NaN。如果第一个字符是数字字符,parseInt()会继续解析第二个字符,直到解析完所有字符或者遇到一个非数字字符。

例如:

var num = parseInt("1234blue");         //1234
  • String类型,用双引号和单引号表示的字符串相同
  • ECMAScript中字符串是不可变的,要改变某个变量保存的字符串,要先销毁原来的字符串。

2.操作符

  • 全等操作符由3个等号(===)表示,它只在两个操作数未经转换就相等的情况下返回true,例如:
var result1 = ("55" == 55);     //true,转换后相等
var result2 = ("55" === 55);    //false,不同数据类型不相等

3.语句

  • for-in语句

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

语法:for (property in expression) statement

如果表示要迭代的对象的变量值为null或undefined,for-in语句会抛出错误。

  • label语句

使用label语句可以在代码中添加标签,以便将来使用。

语法: label: statement

例:

start: for (var i=0; i< count; i++) {
    alert(i);
}

这个例子中定义的start标签可以在将来由break或continue语句引用。加标签的语句一般都要与for语句等循环语句混合食用。

  • with语句

with语句的作用是将代码的作用域设置到一个特定的对象中。

语法: with (expression) statement;

定义with语句的目的主要是简化多次编写同一个对象的工作,例:

var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href;

上面几行代码都包含location对象。如果使用with语句,可以把上面的代码改写如下所示:

with(location) {
    var qs = search.substring(1);
    var hostName = hostname;
    var url = href;
}

由于大量使用with语句会导致性能下降,同时也会给调试代码造成困难,因此在开发大型应用程序时,不建议使用with语句。

4.函数

没有重载!!

如果在ECMAScript中定义了两个名字相同的函数,则后定义的函数有效。