JS学习阶段性总结-1
各种函数的声明
/**
 *	函数的声明
 */
// 声明一个方法,任意调用
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语言的运行环境是单线程的同步的,但有时也存在异步操作,如setTimeout和setInterval,还有其他时候。此时就需要用到异步技术了,因此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);
});
写在注释里的注解
- 跟在注释后面的内容都会在鼠标滑过方法名时呈现
- 写在{}的内容会跟在参数后显示,当无法识别时会显示- any。可加`` 高亮显示,如{``string``}
- 写在注释尾部的内容(用空格隔开),会跟在详细参数说明后,此内容同样满足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的更多相关文章
- js学习笔记:webpack基础入门(一)
		之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ... 
- js学习之变量、作用域和内存问题
		js学习之变量.作用域和内存问题 标签(空格分隔): javascript 变量 1.基本类型和引用类型: 基本类型值:Undefined, Null, Boolean, Number, String ... 
- 【Knockout.js 学习体验之旅】(3)模板绑定
		本文是[Knockout.js 学习体验之旅]系列文章的第3篇,所有demo均基于目前knockout.js的最新版本(3.4.0).小茄才识有限,文中若有不当之处,还望大家指出. 目录: [Knoc ... 
- 【Knockout.js 学习体验之旅】(2)花式捆绑
		本文是[Knockout.js 学习体验之旅]系列文章的第2篇,所有demo均基于目前knockout.js的最新版本(3.4.0).小茄才识有限,文中若有不当之处,还望大家指出. 目录: [Knoc ... 
- 【Knockout.js 学习体验之旅】(1)ko初体验
		前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ... 
- js学习篇1--数组
		javascript的数组可以包含各种类型的数据. 1. 数组的长度 ,直接用 length 属性; var arr=[1,2,3]; arr.length; js中,直接给数组的length赋值是会 ... 
- Vue.js学习笔记(2)vue-router
		vue中vue-router的使用: 
- NODE.JS学习的常见误区及四大名著
		NODE.JS学习的常见误区及四大名著 前段时间由于不满于社区里很多人对于NODE.JS的种种误解而写了一篇文章名为: NODE.JS之我见:http://www.cnblogs.com/pugang ... 
- Node.js学习系列总索引
		Node.js学习系列也积累了一些了,建个总索引方便相互交流学习,后面会持续更新^_^! 尽量写些和实战相关的,不讲太多大道理... Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- ... 
随机推荐
- PHP cal_days_in_month() 函数
			------------恢复内容开始------------ 实例 针对指定的年份和历法,获取一个月中的天数: <?php$d=cal_days_in_month(CAL_GREGORIAN,1 ... 
- PHP octdec() 函数
			实例 把八进制转换为十进制: <?php高佣联盟 www.cgewang.comecho octdec("36") . "<br>";echo ... 
- C/C++编程笔记:C++入门知识丨多态性和虚函数
			本篇要学习的内容和知识结构概览 多态性 编译时的多态性称为静态联编. 当调用重载函数时, 在编译期就确定下来调用哪个函数. 运行时的多态性称为动态联编. 在运行时才能确定调用哪个函数, 由虚函数来支持 ... 
- Linux搭建Gitlab(Docker版)
			1.拉取gitlab的docker镜像 #这里使用gitlab的社区版 docker pull gitlab/gitlab-ce 2.启动gitlab容器实例 docker run -d -p 44 ... 
- JDK8的Stream操作
			原文:https://mp.weixin.qq.com/s/N2zor5RzuHHTHQLHWVBttg 作者:思海同学 好好学java 其他资料:https://mp.weixin.qq.com/ ... 
- Mac IDEA 免激活破解版 亲测有效 2020.8.1记
			开局一张图 下载地址 链接: https://pan.baidu.com/s/1OKbYCRQiZ3ip0Gzle5wydg 密码: iwfb 步骤 卸载之前的IDEA(没安装过,可忽略) 将下载后的 ... 
- 都2020年了,你还不知道怎么学习Python吗?
			众所周知,Python应用广泛,涵盖后端开发.游戏开发.网络爬虫.网站开发.数据挖掘.科学运算.大数据分析.云计算.人工智能等领域,感觉像神一样的存在.Python这么火,那么从入门到精通学习Pyth ... 
- .net+uniapp 前后端数据交互相关问题记录
			uniapp 提交form表单 @submit EventHandle 携带 form 中的数据触发 submit 事件,event.detail = {value : {'name': 'value ... 
- day24:多态&魔术方法__new__&单态模式
			目录 1.多态 2.__new__魔术方法 2.1 关于魔术方法__new__ 2.2 基本语法 2.3 __new__ 触发时机快于构造方法 2.4 __new__ 和 __init__ 参数一一对 ... 
- Java 命令行 编译、执行、打包
			Java 命令行 编译.执行.打包 一般来说 IDE 能够很方便的编译打包. 我写这篇文章是遇到了不能使用 IDE 的情况,简单记录一下,不做深入探讨. 环境 linux jdk 1.8 简单的编译执 ... 
