JavaScript学习笔记[0]

数据类型

  • Number 表示数字,不区分浮点整形。
  • === 比较时不转化数据类型。 == 反之。
  • NaN与任何值都不想等,包括自己。只能用isNaN()
isNaN(NaN);   //true
  • 浮点数计算有误差。任何语言都是这样。只能通过计算差值来确定。
1 / 3 === (1 - 2 / 3) //false
Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001 //true
  • null 和 undefined 类似
  • 对字符串索引赋值,不会改变字符串。字符串的方法都是返回一个新的字符串。
  • 数组。unshift() 往数组头部田间。shift()删除第一个头部元素。与push(),pop()对应。
  • arr.splice()修改数组的万能方法。splice()
  • arr.concat()连接数组。
  • arr.join()把把所有元素用指定字符串连接。返回结果字符串。
var arr = ['A','B','C',1,2,3];
arr.join('-'); //'A-B-C-1-2-3'
  • for ... of ... 访问Map和Set。

函数

  • 要求传入参数却没有传入。返回NaN;
  • arguments 获取所有参数
  • 用好typeof,用于验证参数的传入的合法性。
  • for循环内的局部变量,用let
  • 修复this的指向。apply()参数打包成数组,call()按参数顺序传入。
  • array的map()方法,reduce()

[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)

  • filter(pow) 传入一个bool函数。过滤元素。巧妙地用filter()回调函数去除array重复元素。
var
r,
arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
r = arr.filter(function (element, index, self) {
return self.indexOf(element) === index;
});
  • sort()函数按默认转化字符串排序。排序不改变array,返回新的array。
  • 闭包的作用。阮一峰的博客讲的很新手一些吧。维基上关于闭包的解释,我感觉还是比较抽象的。
  • 箭头函数。简化了函数定义,解决部分this指针问题。
  • generator. yield;

function*()

标准对象

  • typeof
typeof 123; // 'number'
typeof NaN; // 'number'
typeof 'str'; // 'string'
typeof true; // 'boolean'
typeof undefined; // 'undefined'
typeof Math.abs; // 'function'
typeof null; // 'object'
typeof []; // 'object'
typeof {}; // 'object'
  • 小心使用对象

    • 不要使用new Number()、new Boolean()、new String()创建包装对象;

    • 用parseInt()或parseFloat()来转换任意类型到number;

    • 用String()来转换任意类型到string,或者直接调用某个对象的toString()方法;

    • 通常不必把任意类型转换为boolean再判断,因为可以直接写if (myVar) {...};

    • typeof操作符可以判断出number、boolean、string、function和undefined;

    • 判断Array要使用Array.isArray(arr);

    • 判断null请使用myVar === null;

    • 判断某个全局变量是否存在用typeof window.myVar === 'undefined';

    • 函数内部判断某个变量是否存在用typeof myVar === 'undefined'。

  • Date

var now = new Date();
now; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
now.getFullYear(); // 2015, 年份
now.getMonth(); // 5, 月份,注意月份范围是0~11,5表示六月
now.getDate(); // 24, 表示24号
now.getDay(); // 3, 表示星期三
now.getHours(); // 19, 24小时制
now.getMinutes(); // 49, 分钟
now.getSeconds(); // 22, 秒
now.getMilliseconds(); // 875, 毫秒数
now.getTime(); // 1435146562875, 以number形式表示的时间戳
  • getMonth() 0~11

  • RegExp

    • \d 匹配数字
    • \w 匹配字母或数字
    • . 匹配任意字符
      • 表示任意字符,包括0个
      • 表示一个字符
    • ? 表示0个或1个
    • {n} 表示n个字符,{n,m} 表示n-m个字符
    • ^ 行的开头, $ 行的结束
    • 更多具体可见正则大全
var s = 'JavaScript, VBScript, JScript and ECMAScript';
var re=/[a-zA-Z]+Script/g; // 使用全局匹配:
re.exec(s); // ['JavaScript']
re.lastIndex; // 10 re.exec(s); // ['VBScript']
re.lastIndex; // 20 re.exec(s); // ['JScript']
re.lastIndex; // 29 re.exec(s); // ['ECMAScript']
re.lastIndex; // 44 re.exec(s); // null,直到结束仍没有匹配到
  • JSON

JavaScript学习笔记[0]的更多相关文章

  1. ArcGIS API for JavaScript 4.2学习笔记[0] AJS4.2概述、新特性、未来产品线计划与AJS笔记目录

    放着好好的成熟的AJS 3.19不学,为什么要去碰乳臭未干的AJS 4.2? 4.2全线基础学习请点击[直达] 4.3及更高版本的补充学习请关注我的博客. ArcGIS API for JavaScr ...

  2. Java程序猿的JavaScript学习笔记(8——jQuery选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  3. Java程序猿JavaScript学习笔记(4——关闭/getter/setter)

    计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...

  4. Java程序猿JavaScript学习笔记(14——扩大jQuery UI)

    计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...

  5. javascript学习笔记(四) Number 数字类型

    数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数  toExponential() 方法 用科学 ...

  6. JavaScript学习笔记之数组(二)

    JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...

  7. Java程序猿的JavaScript学习笔记(1——理念)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  8. Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  9. JavaScript:学习笔记(5)——箭头函数=>以及实践

    JavaScript:学习笔记(5)——箭头函数=>以及实践 ES6标准新增了一种新的函数:Arrow Function(箭头函数).本文参考的链接如下: MDN箭头函数:https://dev ...

随机推荐

  1. bzoj千题计划185:bzoj1260: [CQOI2007]涂色paint

    http://www.lydsy.com/JudgeOnline/problem.php?id=1260 区间DP模型 dp[l][r] 表示涂完区间[l,r]所需的最少次数 从小到大们枚举区间[l, ...

  2. Python 入门基础1 --语言介绍

    本节目录: 一.编程语言介绍 二.python解释器介绍 三.安装python解释器 四.运行python程序的两种方式 五.变量 六.后期补充内容 一.编程语言介绍 1.机器语言: 直接用二进制编程 ...

  3. Linux内核中进程上下文、中断上下文、原子上下文、用户上下文的理解【转】

    转自:http://blog.csdn.net/laoliu_lcl/article/details/39972459 进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不 ...

  4. React-Native 之 TabBarIOS

    前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...

  5. docker 构建带健康检查的redis镜像

    =============================================== 2018/11/5_第1次修改                       ccb_warlock == ...

  6. 深入理解java虚拟机-01 走进java

    第一章是对java的产生,历史的整体介绍 java的使用很广泛,安装jdk的时候会看到一句广告语runs in 10 billions machines.使用java的设备多达几十亿台 1.概述 优点 ...

  7. delete/truncate/drop table的区别以及锁在这里的角色

    数据库删除语句 Drop/Delete/Truncate比较 Delete :删除数据表中的行(可以删除某一行,也可以在不删除数据表的情况下删除所有行). 删除某一行:Delete from 数据表名 ...

  8. mac OS配置用户全局环境变量(设置字符集为UTF8)

    mac OS系统跟linux系统一样也是将用户的全局环境变量保存在.bash_profile配置文件中,只是mac OS默认没有此文件. 1.创建.bash_profile文件 vi ~/.bash_ ...

  9. 绘图: matplotlib核心剖析

    参考:http://www.cnblogs.com/vamei/archive/2013/01/30/2879700.html http://blog.csdn.net/ywjun0919/artic ...

  10. 打造一款便携版的Sublime Text

    https://segmentfault.com/a/1190000000707661 https://www.cnblogs.com/52cik/p/sublime-diy.html 直接安装Sub ...