各种函数的声明

/**
* 函数的声明
*/
// 声明一个方法,任意调用
function aaa(args){...} // 声明一个函数并以变量的形式展示出去,因此无法再声明前调用
var fn = function (args){...}; // 声明一个箭头函数,一般作为回调函数,没有函数名无法调用
(args)=>{...};




ES6中 => 箭头函数

写法:

function fn(callback){
console.log(callback(22)); // 输出23
} // 作为普通匿名函数,x可以是 ()、(arg_1,arg_2)、arg
fn( x => {/* 函数体 */} ); // 当只有返回值或表示式时,可以省略大括号
fn(bb => bb+1); // 输入bb,输出 bb+1

优点:

在一般情况下,this指向window或最内部作用域,此时需要用var that = this等方法实现this转换。而箭头函数内部的this是词法作用域,由上下文确定。

var obj = {
birth: 1990,
getAge: function () {
var b = this.birth; // 这里的this指向obj return function () {
return new Date().getFullYear() - this.birth; // this指向window或undefined
};
},
getAge_2: function(){
return () => new Date().getFullYear() - this.birth;
}
}; console.log(obj.getAge(),obj.getAge_2()); // NaN 30




Promise函数实现异步

js语言的运行环境是单线程的同步的,但有时也存在异步操作,如setTimeoutsetInterval,还有其他时候。此时就需要用到异步技术了,因此ES6中引入Promise函数,并基于此我们能快速实现异步调用。

链式调用new Promise().then()

// 先构造一个promise对象,构造方法接收两个方法参数,此时可以由用户判断
new Promise((resolve,reject)=>{
var a = 1;
a ? resolve() : reject();
}).then(
// 这个是resolve函数
function (resovle1,reject) {
console.log("第一个resolve"); var aaa = null;
if(0){
aaa = 100;
}
// 如果在此函数内报错或抛出错误,将会执行下一个reject函数
error = new Error("发生错误");
throw aaa || error; // 抛出的数据,在下一个reject函数中能被捕获
}, // 这个是reject函数
function () {
console.log("第一个reject");
}
).then(
function () {
console.log("第二个resolve");
},
function (e) {
console.log(e); // 输出上一个函数捕获到的数据
console.log("第二个rejcet");
}
);

异常捕获 new Promise().catch()

效果和写在then的第二个参数里面一样。

总的来说,两者都能捕获异常并使程序继续执行,而不会报错卡死。

new Promise((resolve,reject)=>{
var a = 1;
a ? resolve() : reject();
}).catch(function(reason,data){
/** */
})

异步执行Promise.all()

在这里用到js引用(包括对象的赋值)来观察异步,不幸的是,可能是方法太少无法观察到异步。

此外,只有all()内部函数全部执行成功,才会进入.then()中的resolve函数

异步执行Promise.race()

all是等所有的异步操作都执行完了再执行then方法,那么race方法就是相反的,谁先执行完成就先执行回调。无论是正确回调还是错误回调,其他函数都不会进入.then()方法。

function promiseClick1(time) {
let p = new Promise(function (resolve, reject) {
setTimeout(function () {
var num = Math.ceil(Math.random() * 20); //生成1-10的随机数
console.log(time / 1000 + 's随机数生成的值:', num)
if (num <= 10) {
resolve(num);
}
else {
reject(time / 1000 + 's数字太于10了即将执行失败回调');
}
}, time);
});
return p;
} Promise.all([setName(), setName(), setName()]
).then(function (results) { // 全部成功才执行此函数
console.log(results);
}, function (results) { // 只有一个函数会进入此步
console.log(results);
}); Promise.race([promiseClick1(3000), promiseClick1(2000), promiseClick1(1000)]
).then(function (results) { // 最好执行完毕的函数进入此,其他跳过
console.log('成功', results);
}, function (reason) {
console.log('失败', reason);
});




写在注释里的注解

  1. 跟在注释后面的内容都会在鼠标滑过方法名时呈现
  2. 写在{}的内容会跟在参数后显示,当无法识别时会显示any。可加`` 高亮显示,如{``string``}
  3. 写在注释尾部的内容(用空格隔开),会跟在详细参数说明后,此内容同样满足markdown语法,如高亮或加粗
/**
* @description 这是描述
* @param CN{string[]} CheckNull
* @returns {Boolean} true:`通过校验` false:`未通过`
*/
(property) checkAll: (CN: string[]) => boolean
@description
@param CN — CheckNull
@returns — true:通过校验 false:未通过
function AA(CN, CC, CT,CP){
return aa;
}




jquery.prop()实现元素属性替换

一般来说,$(xx).attr(key, val)可以实现属性的替换,但在有些时候会失效。这时一般要用$(xx).prop(key, val)

$(xx).attr(key);			// 本意为获取元素某属性的值
$(xx).attr(key, val); // 一般也能够实现元素属性的替换 $(xx).prop(key, val); // 正规的元素属性替换
  • 发起ajax时,数据应该以JSON.stringify(json_obj)形式进行绑定




ES7中的JS注解开发


时间:2020/08/19 13:53

坐标:广东省深圳市


JS学习阶段性总结-1的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. js学习之变量、作用域和内存问题

    js学习之变量.作用域和内存问题 标签(空格分隔): javascript 变量 1.基本类型和引用类型: 基本类型值:Undefined, Null, Boolean, Number, String ...

  3. 【Knockout.js 学习体验之旅】(3)模板绑定

    本文是[Knockout.js 学习体验之旅]系列文章的第3篇,所有demo均基于目前knockout.js的最新版本(3.4.0).小茄才识有限,文中若有不当之处,还望大家指出. 目录: [Knoc ...

  4. 【Knockout.js 学习体验之旅】(2)花式捆绑

    本文是[Knockout.js 学习体验之旅]系列文章的第2篇,所有demo均基于目前knockout.js的最新版本(3.4.0).小茄才识有限,文中若有不当之处,还望大家指出. 目录: [Knoc ...

  5. 【Knockout.js 学习体验之旅】(1)ko初体验

    前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...

  6. js学习篇1--数组

    javascript的数组可以包含各种类型的数据. 1. 数组的长度 ,直接用 length 属性; var arr=[1,2,3]; arr.length; js中,直接给数组的length赋值是会 ...

  7. Vue.js学习笔记(2)vue-router

    vue中vue-router的使用:

  8. NODE.JS学习的常见误区及四大名著

    NODE.JS学习的常见误区及四大名著 前段时间由于不满于社区里很多人对于NODE.JS的种种误解而写了一篇文章名为: NODE.JS之我见:http://www.cnblogs.com/pugang ...

  9. Node.js学习系列总索引

    Node.js学习系列也积累了一些了,建个总索引方便相互交流学习,后面会持续更新^_^! 尽量写些和实战相关的,不讲太多大道理... Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- ...

随机推荐

  1. 10-9 重要的内置函数(zip、filter、map、sorted)

    reverse----reversed l = [1,2,3,4,5,6] l.reverse() #不会保留原列表 print(l) l =[1,2,3,4,5,6] l2 = reversed(l ...

  2. Python os.remove() 方法

    概述 os.remove() 方法用于删除指定路径的文件.如果指定的路径是一个目录,将抛出OSError.高佣联盟 www.cgewang.com 在Unix, Windows中有效 语法 remov ...

  3. 4.17 省选模拟赛 远行 LCT 启发式合并 倍增

    容易写出nQ的暴力 由于数据是期望的时间 所以直接dfs可以跑的很快 可以拿到70分. 当然 可以进一步优化暴力 使用换根dp 然后可以将暴力优化到n^2. const int MAXN=300010 ...

  4. Python编程基础(一)编程语言是什么?编译型语言和解释型语言的区别|Python是什么?

    编程语言是什么? 其实,程序指的就是一系列指令,用来告诉计算机做什么,而编写程序的关键在于,我们需要用计算机可以理解的语言来提供这些指令. 虽然借助 Siri(Apple).Google Now(An ...

  5. Android布局的一些属性和开关、创建log图片

    文本的一些属性 android:id="@+id/editText" 给文本的id重命名 android:layout_width="wrap_content" ...

  6. Qt信号参数中使用QVariantList时编译问题

    今天调试代码时遇到一个奇怪的问题,不过一般感觉比较奇怪的问题,最后查到原因时,原因都比较简单! 编译问题 先来看一下qt的编译错误,提示一堆错误: In file included from D:\Q ...

  7. Java代码编写规范(转载)

    编码规范 1 前言为确保系统源程序可读性,从而增强系统可维护性,java编程人员应具有基本类似的编程风格,兹制定下述Java编程规范,以规范系统Java部分编程.系统继承的其它资源中的源程序也应按此规 ...

  8. 学生成绩管理系统-JAVA语言测试

     首先右键新建一个工程project 选择Java Project,单击next下一步 project命名为“学生成绩管理系统”,点击finish继续 右键src文件夹新建Package包,取名为te ...

  9. python实现单张图像拼接与批量图片拼接

    本文实例为大家分享了python实现图像拼接的具体代码,供大家参考,具体内容如下 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经 ...

  10. 13、Java 异常处理

    1.简介 什么是异常?程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止.在Java中即,Java在编译或运行或者运行过程中 ...