js学习 3

JavaScript JSON

json是用于存储传输数据的格式
json通常用于服务端网页传递数据

json.parse() 将json字符串转换为js对象
json.stringify()将js值转换为json字符串

{"sites":[
    {"name":"Runoob", "url":"www.runoob.com"}, 
    {"name":"Google", "url":"www.google.com"},
    {"name":"Taobao", "url":"www.taobao.com"}
]}

JSON 是 JS 对象的字符串表示法。它使用文本表示一个 JS 对象的信息,(JSON)本质是一个字符串

javascript:void(0) 含义

void指定要计算一个表达式而不是返回值
如果你要定义一个死链接请使用 javascript:void(0) :

<a href="javascript:void(0)">单击此处什么也不会发生</a>

JavaScript 异步编程

同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高

js中的异步操作函数往往通过回调函数来实现异步任务的结果处理。

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

JavaScript Promise

promise的目的是更加优雅地书写复杂的异步任务

构造promise

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

resolve和reject都是函数,调用resolve代表一切正常,reject是出现异常时调用的。

Promise类有.then() .catch().finally()三个方法,其参数都是一个函数。

.then()可以将参数中的函数添加到当前Promise的正常执行序列,.catch()则是设定Promise的异常处理序列,.finally()是在Promise执行的最后一定会执行的序列。
.then()传入的函数会按顺序依次执行,有任何异常都会直接跳到catch序列。

resolve()中可以放置一个参数用于向下一个then传递一个值。
reject() 参数中一般会传递一个异常给之后的 catch 函数用于处理异常。

实例:

new Promise(function(resolve, reject){
	setTimeout(function(){
		console.log("First");
		resolve();
	}, 1000);
}).then(function(){
		
	}

Promise函数

function print(delay, message){
	return new Promise(function(resolve, reject){
		setTimeout(function(){
			console.log(message);
			resolve();
		}, delay);
	});
}

这种返回值为一个Promise对象的函数称作Promise函数,常常用于开发基于异步操作的库。

print(100, "first").then(function(){
		return print(4000, "second");
	}).then(function(){
		print(3000, "Third");
	})

还可以变为

async function asyncFunc(){
	await print(1000, "First");
	await print(4000, "second");
	await print(3000, "Third");
}
asyncFunc();

Promise 对象代表一个异步操作,有三种状态:Pending(进行中)、Resolved(已完成,又称 Fulfilled)和 Rejected(已失败)。
通过回调里的 resolve(data) 将这个 promise 标记为 resolverd,然后进行下一步 then((data)=>{//do something}),resolve 里的参数就是你要传入 then 的数据。

JavaScript 函数定义
可以通过声明定义,也可以是一个表达式。

  1. 声明通过function关键字
function functionName(parameters){
	//
} //不以分号结尾,因为声明后不会立即执行
  1. 函数表达式
    函数表达式可以存储在变量中。
    此时的函数实际上只是一个匿名函数(没有名称),函数存储在变量中,不需要函数名称,通常通过变量名来调用。
var x = function(a, b){return a * b}; //以分号结尾,因为是一个执行语句

var z = x(4, 2)

Function()构造函数
可通过内置的js函数构造器(Function())定义。

var myFunction = new Function("a", "b", "return a * b");
var x = myFunction(4, 3);

函数提升(hoisting)

函数是对象
js函数有属性方法

argument.length属性返回函数调用过程中接受到的参数个数。

箭头函数
ES6增加了箭头函数

(参数1,参数2...) => {函数声明}
(参数1,参数2...) => 表达式(单一)

当只有一个参数时,圆括号可选

(单一参数) => {函数声明}
单一参数 => {函数声明}

没有参数的函数写出一对圆括号

() => {函数声明}

函数表达式使用const比使用var更安全,因为函数表达式始终是一个常量。
若函数部分只是一个语句,则可以省略return和{},is a good habit

arguments对象
JavaScript 函数有个内置的对象 arguments 对象。
argument 对象包含了函数调用的参数数组。

JavaScript 函数调用

有4种调用方式
区别在于this的初始化

  • 作为一个函数调用
  • 全局对象
  • 函数作为方法调用
  • 使用构造函数调用函数
  • 作为方法调用函数

JavaScript 闭包

var add = (function(){
	var counter = 0;
	return function(){return counter += 1;}
})();

add变量可以作为一个函数使用。它可以访问函数上一层作用域的计数器。这叫做js闭包。它使得函数拥有私有变量变为可能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值