写在日前

国庆重新整建材质时,发现刚起头入门前端时读书JS
的资料,考虑以三个根基入门博客记录下来,有不写不没错多多扶植;

先引入些书本给要求的童鞋

《JavaScript 高端程序设计.pdf》第三版

 《JavaScript权威指南(第六版卡塔尔(قطر‎.pdf》

《高性能javascript.pdf》

《JavaScript语言精髓—高清版.pdf》

《你不知晓的JavaScript(上卷).pdf》

《你不领会的JavaScript(中卷).pdf》

数据类型

ECMAScript
中数据类型分为大旨数据类型,复杂数据类型也称为援用数据类型,即常说的对象;

主干数据类型是简约的数据段,包括String、Number、Boolean、Null、Undefined。

引用数据类型是由风姿浪漫组冬日的名值对构成 如 Object;

主干数据类型

1、Undefined 类型

 Undefined 类型唯有二个值,即 undefined。以下情状的值会是 undefined
(1)变量被声称了,但从没赋值,暗中同意值为undefined。
(2)调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象未有赋值的属性,该属性的值为undefined。
(4)函数未有再次来到值时,暗中认可重返undefined。
(5)未定义的变量使用typeof 再次来到undefined(严苛形式下报错)。

<script>
    var a;
    console.log(a);//undefined
    function f(a, b, c) {
        console.log(c)//undefined
    }
    f(1, 2); //未传递的实参

    function fo(){}
    console.log(fo());//没有明确返回值,默认返回undefined
</script>

2、Null 类型

Null 独有叁个值
null,null是javascript语言的重视字,它象征八个异样值,常用来陈说”空值”,从逻辑角度来看,null
是三个空对象指针;平时要把叁个变量来保存对象,那么最佳将变量开首化为null;

[注意]null是空对象指针,而[]是空数组,{}是空对象,三者不相同;

null与undefined 都以代表无、不设有,那么为何会同期存在吗?

1、一同初null像在Java、.net里相像,被当成多个对象。可是javascript的值分成原始类型和对象类型两大类,小编感觉基本项目表示”无”的值最佳不是目的。
2、javascript的最早版本未有包蕴错误管理机制,爆发数据类型不相配时,往往是半自动调换类型或许默默地战败。小编感觉只要null自动转为0,特不便于开采错误;

null 与undefined 区别又是何等吧?

时下的话,null和undefined基本是如出后生可畏辙的,都以代表无,只是利用处景不太大器晚成致 如:

null表示”未有对象”,即该处不应当有值。标准用法是:

  • 用作函数的参数,表示该函数的参数不是指标。
  • 作为指标原型链的极端。

undefined代表”缺少值”,就是这里应该有八个值,不过还尚无概念/开首化。标准用法是:

  • 变量被声称了,但绝非赋值,私下认可值为undefined。
  • 调用函数时,应该提供的参数未有提供,该参数等于undefined。
  • 指标未有赋值的习性,该属性的值为undefined。
  • 函数未有重返值时,暗许重返undefined。
  • 未定义的变量使用typeof 再次回到undefined(严酷情势下报错)。

(typeof null) //返回object 误区

在 JavaScript 最先的兑现中,JavaScript
中的值是由叁个代表项指标竹签和骨子里数据值表示的。对象的类型标签是0。由于
null 被规划成空指针(大许多阳台下值为0x00卡塔尔国,因而,null的项指标签也改为了0,typeof
null就大谬不然的归来了”object”.(referenc卡塔尔 但是尽管修复了
会产生一大波旧的js不相称;

这一场地有待于在ECMAScript 6中被修复 (该建议已被推翻卡塔尔. 精确的重回值将改成
typeof null === ‘null’.

 

3、Boolean 类型

Boolean 布尔类型有 true、false。在js中是分别抑扬顿挫写的,即 True、False
并非Boolean的值,尽管Boolean
只有那四个值,可是在js中其余数据类型的值调用Boolean(卡塔尔函数,都能回到五个Boolean值;只要记住如下准则就能够:(0,-0,NaN,”,null,undefined)这两个永世为false,其余都为true

<script>
    var message = 'ds';
    if (message) {
        console.log('成功'+message)// 成功ds
    }
    var obj={};
    if(obj){
        console.log('成功'+obj)// 成功[object Object]
    }
    var a=0;
    if(a){
        console.log('成功'+a);
    }else{
        console.log('失败'+a)// 失败0
    }

</script>

4、Number 类型

在js中动用Number 类型来代表整数与浮点数(数值必须含有三个小数点);

var intNum=66; //整数
var floatNum=1.1 //浮点数

尽管某次总括的结果当先了Javascript 数值范围(Number.MAX_VALUE 最大值
Number.MIX_VALUE)那么那几个结果就能够自行转为Infinity,借使那几个数值是负数会转为-Infinity(负无穷),借使是正数会转为Infinity(正无穷)

NaN:非数值(Not a
Number)是三个特种的值,表示这里本应该是四个数值,可是实际不是数值; 如

 var a=10,b='str';
    console.log(a*b);//NaN

NaN 具犹如下特征:
1、任何与NaN的操作都以回来NaN;
2、NaN与别的值都不对等;  

<script>
    var a = 10, b = 'str';
    console.log(a * b);//NaN

    console.log(NaN == NaN)//false
    console.log(NaN === NaN)//false
    console.log(NaN == 'str')//false
</script>

针对NaN的三个特征,ECMAScript定义了
isNaN(卡塔尔(قطر‎函数来显明有些变量/表明式结果是还是不是NaN,那个函数会尝试把变量转换为数值,假设不可能转换则赶回true,反正再次来到false;  

<script>

    console.log(isNaN('red'));//true 不能转换number
    console.log(isNaN('10'));//false 能转换number
    console.log(isNaN(10));//false 能转换number
    console.log(isNaN(false));//false 能转换number
    console.log(isNaN(true));//false 能转换number

    console.log(isNaN(''));//false 能转换number  0
    console.log(isNaN(undefined));//true 不能转换number
    console.log(isNaN('undefined'));//true 不能转换number
    console.log(isNaN(null));//false 能转换number 0
    console.log(isNaN('null'));//true 不能转换number

</script>

typeof 基本数据类型检查

<script>
    var s = 'name';
    console.log(typeof s)//string
</script>

typeof                            重返以下字符串

undefined                      这么些变量未定义、未开头化
object                            这几个变量是指标大概是null
boolean                         这么些变量是布尔值
number                          这么些变量是数值
string                             这几个变量是字符串
function                         这几个变量是函数

援引数据类型

引用类型是一种用于将数据和成效公司在同步的数据构造(也常被改成类),引用类型的值(对象)是引用类型的三个实例。可是js中并未有类的定义,由此引用类型也足以被称呼对象,因为她们叙述的是性质和艺术的集结;
ECMAScript提供了比比较多原生援用类型(如:Object)

Object类型

笔者们见到的大多援用类型都以Object类型的实例,Object的实例本人不具有超级多意义,但对于在应用程序中积攒和传输数据来说,是极度美好的筛选。

Array类型

除去Object之外,Array算是js最常用最常用的品种。js中的数组与其余语言的数组都以数量的稳步列表,因为js是弱类型,所以js中数组的每后生可畏项能够保存任何类型的多寡;

Date类型

js中用来营造日期对象的援引类型

RegExp类型

js通过RegExp类型来扶持正则表明式

Function类型

js中的function实际上是目的,每一种函数都以Function类型的实例,而且都与此外引用类型同样具有属性和方法。由于函数是目的,由此函数名实际上也是一个指向性函数对象的指针;

引用类型提供的性质以致艺术这里不在陈述,不晓得的能够参照如下连接

instanceof  检查测量试验有些实例的具体品种 

语法:

object instanceof constructor

描述:
instanceof 运算符用来质量评定 constructor.prototype 是或不是存在于参数 object
的原型链上。
能够知晓为 instanceof 用于判定有些实例(对象)是或不是是某些项指标实例;  

var a=new Array();
alert(a instanceof Array);//true,
alert(a instanceof Object)也会返回true;这是因为Array是object的子类。

再如:
function test(){};
var a=new test();
alert(a instanceof test)会返回true。