写JS代码让自己头秃的点

主要还是自己没系统学习js的锅吧,记录一下。

匿名函数内用this

匿名函数中,this指代的是window对象,不是直观理解中的,局部this,这就会产生undefine的问题。
可以在匿名函数外使用另外的变量名表示。

var vm = this
var f = function () {vm.count = 1
}

匿名函数中赋值外部变量无效

本质上是因为js是异步执行,按照同步的思路写代码会造成误以为没有赋值成功的错觉,其实是赋值成功了的,只不过是在后面的代码执行之后,他才执行。
但是同步执行很多时候是必要的,可以使用Promise在实现,在then中确保能够同步执行。

首先来个栗子。

// from https://www.runoob.com/w3cnote/javascript-promise-object.html
function ajax(URL) {return new Promise(function (resolve, reject) {var req = new XMLHttpRequest(); req.open('GET', URL, true);req.onload = function () {if (req.status === 200) { resolve(req.responseText);} else {reject(new Error(req.statusText));} };req.onerror = function () {reject(new Error(req.statusText));};req.send(); });
}
var URL = "/try/ajax/testpromise.php";
ajax(URL).then(function onFulfilled(value){document.write('内容是:' + value);
}).catch(function onRejected(error){document.write('错误:' + error);
});

也可以使用async和await来写,这两个关键字学过python比较容易理解。可以理解为自动生成了Promise对象。

async download (url) {var flag = falseawait axios.get(url, {}).then((res) => {flag = true}).catch((err) => {flag = false})// await使得进程挂起,直到get请求执行完毕,最后再回来returnreturn flag
}var down = download('/abc.txt')
down.then((ret) => {// something to doconsole.log(ret)
}).catch((err) => {console.log(err)
})

写JS代码让自己头秃的点相关推荐

  1. 关于使用eclipse写JS代码没有提示的解决方法

    关于使用eclipse写JS代码没有提示的解决方法 eclipse原本是不会自动提示JS代码的,但是可以通过安装插件实现JS代码的提示功能 首先:help->Eclipse Marketplac ...

  2. 原生 遍历_前端原生写js代码还是用vue等框架写项目?

    其实对于初入前端的同学来说,我个人推荐写原生.因为扎实的js基础是通过写原生代码逐步理解js的数据类型,语法,闭包,原型链,继承等知识,只有在项目中主动应用这些js的基本知识,才能逐步提高你的编码能力 ...

  3. 【每日手写JS代码】

    文章目录 一. 手写JS 1-1 数组方法 1月5号 数组扁平化 1月6号 Array.prototype.map() 1月7号 Array.prototype.filter() 1月8号 Array ...

  4. html 中如何写js代码提示错误,javascript怎么进行错误处理?

    在ES3之前js代码执行的过程中,一旦出现错误,整个js代码都会停止执行,这样就显的代码非常的不健壮.从ES3开始,js也提供了类似的错误处理机制,从而让js代码变的更健壮,及时执行的过程中出现了异常 ...

  5. vue写js代码_vue.js弹出式音乐播放器特效代码

    码农那点事儿 关注我们,一起学习进步 vue弹出式音乐播放器是一款基于vue.js实现的点击弹出式音乐播放器代码特效,点击图片即可弹出播放界面大图,可切换列表模式,上一首下一首音乐切换等功能. 下载源 ...

  6. eclipse jsp 写 js 代码提示_基于jsp+servlet的宠物管理系统

    源码编号:B-E00002  点击查看分类规则 项目类型:Java EE项目(java web项目) 项目名称:基于jsp+servlet的宠物管理系统(Pet) 当前版本:V1.0.0版本 难度等级 ...

  7. php中如何写js代码提示_PHP 如何编写类似js中alert() 提示框

    这篇文章主要介绍了PHP 实现类似js中alert() 提示框功能,非常的实用,这里推荐给大家,有需要的小伙伴来参考下,希望大家能喜欢. 主要应用于添加判断提示,跳转,返回,刷新. 代码如下:/** ...

  8. html 中如何写js代码提示错误,javascript如何进行错误处理?

    错误处理对于web应用程序开发至关重要,不能提前预测到可能发生的错误,不能提前采取恢复策略,可能导致较差的用户体验.由于任何javascript错误都可能导致网页无法使用,因此作为开发人员,必须要知道 ...

  9. easyui form 返回html,form(表单) - TopJUI前端框架,不用写JS代码的EasyUI

    Form(表单) 使用$.fn.iForm.defaults重写默认值对象 form提供了各种方法来操作执行表单字段,比如:ajax提交, load, clear等等.当提交表单的时候可以调用vali ...

最新文章

  1. 面霸篇:高频 Java 基础问题(核心卷一)
  2. 老黄历接口(免注册)
  3. springboot+IntelliJ IDEA实现热部署
  4. python中用来回溯异常的模块_Python_10-异常处理
  5. Luogu1640 连续攻击游戏
  6. sqlserver有外键无法创建触发器_数据库不使用外键的 9 个理由
  7. 教育中的“产出/产能平衡”原则
  8. at()函数遍历图像
  9. Nginx优化---防盗链--网页缓存--网页压缩--日志分割
  10. 11.什么是Heuristic
  11. 盘点:文本内容安全领域 深度学习的六个主流应用方法
  12. python展开阅读全文_展开阅读全文 js 爬虫操作
  13. NetworkX学习笔记07:泊松分布与幂律分布
  14. Settings Preference 的理解
  15. LMT and ASSM
  16. Windows 防火墙的入站和出站规则说明
  17. 某信息安全攻防大赛周周练考核(一) Writeup By 2ha0yuk7on
  18. 用Python通过163邮箱发送邮件
  19. 正则表达式的g m $ ^ i
  20. Linux(5)账号和权限管理

热门文章

  1. 路西法及堕落天使相关资料
  2. 微软、谷歌、百度等公司经典面试100题[第101-160题]
  3. 2022.11.17补题祭
  4. 项目进展:淘宝店铺抓取
  5. 阿里妈妈API接口;item_search - 按关键字或网址搜索商品
  6. 微信小程序---小程序中引入的echarts在滑动屏幕时抖动以及不跟随scroll滑动问题
  7. php薄饼,即将消失的汕头美食:糖葱薄饼
  8. 限制input框只能输入数字,加减号也不可以输入
  9. qt html 库段错误,连接Qwt库时Qt代码中的分段错误
  10. linux centos7 安装gc,Linux(Centos7)安装Java JDK及卸载