目录

1、JavaScript简介

1.1、JavaScript数据类型

1.2、JavaScript函数

1.3、JavaScript字符串

 1.4、JavaScript 类型转换

1.5、JavaScript 错误 - throw、try 和 catch

1.6、JavaScript 调试

1.7、JavaScript 异步编程

1.7.1、Promise

1.7.2、异步函数

1.8、函数定义

1.9、函数参数


学习路径:菜鸟教程,主要就是熟悉一下JavaScript的语法规则,然后我学习的是微信小程序,所以JavaScript很多内容都不需要,例如在html中的使用

1、JavaScript简介

  • JavaScript 拥有动态类型,使用关键字 var 来定义变量,返回时确定数据类型
  • JavaScript使用分号分割语句(非必要),使用分号是可以在一行执行多条语句
  • JavaScript中的let命令所在的代码块内有效
  • JavaScript中的const不需要声明变量类型,c语言用法const int a,现在 const a即可

1.1、JavaScript数据类型

        值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol(表示独一无二的值)。

        引用数据类型(对象类型):对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegExp)和日期(Date)。

        注意:对象由花括号分隔。在括号内部,对象属性名称和值对的形式 (name : value) 来定义。属性由逗号分隔,访问时的两种方法:

object.name;
object["name"];

1.2、JavaScript函数

        函数声明,关键词 function 必须是小写的(小程序好像可以不需要function)

function myFunction(var1,var2)
{
    //执行代码
}

1.3、JavaScript字符串

方法

描述

charAt()

返回指定索引位置的字符,或者直接使用[index]获取

charCodeAt()

返回指定索引位置字符的 Unicode 值

concat()

连接两个或多个字符串,返回连接后的字符串,多个的时候使用,单个也可以使用push

fromCharCode()

将 Unicode 转换为字符串

indexOf()

返回字符串中检索指定字符第一次出现的位置

lastIndexOf()

返回字符串中检索指定字符最后一次出现的位置

localeCompare()

用本地特定的顺序来比较两个字符串

match()

找到一个或多个正则表达式的匹配

replace()

替换与正则表达式匹配的子串

search()

检索与正则表达式相匹配的值

slice()

提取字符串的片断,并在新的字符串中返回被提取的部分

split()

把字符串分割为子字符串数组

substr()

从起始索引号提取字符串中指定数目的字符

substring()

提取字符串中两个指定的索引号之间的字符

toLocaleLowerCase()

根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射

toLocaleUpperCase()

根据主机的语言环境把字符串转换为大写,只有几种语言(如土耳其语)具有地方特有的大小写映射

toLowerCase()

把字符串转换为小写

toString()

返回字符串对象值

toUpperCase()

把字符串转换为大写

trim()

移除字符串首尾空白

valueOf()

返回某个字符串对象的原始值

constructor

对创建该对象的函数的引用

length

字符串的长度

prototype

允许您向对象添加属性和方法

 1.4、JavaScript 类型转换

  • typeof 操作符来查看 JavaScript 变量的数据类型
  • String()toString()可以将数字/和布尔值转换为字符串:String(123)/String(false)
  • toExponential()把对象的值转换为指数计数法。
  • toFixed()把数字转换为字符串,结果的小数点后有指定位数的数字。
  • toPrecision()把数字格式化为指定的长度。
  • Number() 可以将字符串/布尔值转换为数字:Number("123"),Number(false)
  • Number() 和getTime() 可将日期转换为数字,返回秒数:Number(new Date()) 

        注意事项:例如var x = 10 + "5";竟然可以正常运行返回"105",这样在自己调用的时候需要注意其类型,避免出现自己混淆出现程序跑飞的情况

1.5、JavaScript 错误 - throw、try 和 catch

  • try 语句允许我们定义在执行时进行错误测试的代码块, try 和 catch 是成对出现的。
  • catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。
  • throw 语句创建自定义错误。
  • finally 语句在 try 和 catch 语句之后,无论是否有触发异常,该语句都会执行。

1.6、JavaScript 调试

  • console.log() 方法在调试窗口上打印 JavaScript 值

1.7、JavaScript 异步编程

        异步的概念:程序的运行是同步的(同步不意味着所有步骤同时运行,而是指步骤在一个控制流序列中按顺序执行)。而异步的概念则是不保证同步的概念,也就是说,一个异步过程的执行将不再与原有的序列有顺序关系。JavaScript 中的异步操作函数往往通过回调函数来实现异步任务的结果处理。

        回调函数就是一个函数,它是在我们启动一个异步任务的时候就告诉它:等你完成了这个任务之后要干什么。这样一来主线程几乎不用关心异步任务的状态了,他自己会善始善终。例如:

//这段程序中的 setTimeout 就是一个消耗时间较长(3 秒)的过程,
它的第一个参数是个回调函数,第二个参数是毫秒数,
这个函数执行之后会产生一个子线程,子线程会等待 3 秒
setTimeout(function () {
    document.getElementById("demo").innerHTML="RUNOOB!";
}, 3000);

1.7.1、Promise

        新建一个JavaScript Promise 对象

new Promise(function (resolve, reject) {
    // 要做的事情...
});

        Promise 构造函数只有一个参数,是一个函数,这个函数在构造之后会直接被异步运行,所以我们称之为起始函数。起始函数包含两个参数 resolve 和 reject,但是请注意以下两点:

  • resolve 和 reject 的作用域只有起始函数,不包括 then 以及其他序列;
  • resolve 和 reject 并不能够使起始函数停止运行,别忘了 return。

1.7.2、异步函数

        异步函数 async function 中可以使用 await 指令,await 指令后必须跟着一个 Promise,异步函数会在这个 Promise 运行中暂停,直到其运行结束再继续运行。

        异步函数实际上原理与 Promise 原生 API 的机制是一模一样的,只不过更便于程序员阅读。

处理异常的机制将用 try-catch 块实现:

async function asyncFunc() {
    try {
        await new Promise(function (resolve, reject) {
            throw "Some error"; // 或者 reject("Some error")
        });
    } catch (err) {
        console.log(err);
        // 会输出 Some error
    }
}
asyncFunc();

1.8、函数定义

        箭头函数

//定义
(参数1, 参数2, …, 参数N) => { 函数声明 }

(参数1, 参数2, …, 参数N) => 表达式(单一)
// 相当于:(参数1, 参数2, …, 参数N) =>{ return 表达式; }
//实例
// ES5
var x = function(x, y) {
     return x * y;
}
 
// ES6
const x = (x, y) => x * y;

1.9、函数参数

  • JavaScript 函数定义显式参数时没有指定数据类型。
  • JavaScript 函数对隐式参数没有进行类型检测。
  • JavaScript 函数对隐式参数的个数没有进行检测。

例如函数参数检测:

//	如果 y 已经定义,y || 0 返回 y,因为 y 是 true,
否则返回 0,因为 undefined 为 false。
function myFunction(x, y) {
    y = y || 0;
}