位置: 编程技术 - 正文

我的NodeJs学习小结(一)(node. js教程)

编辑:rootadmin

推荐整理分享我的NodeJs学习小结(一)(node. js教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs基础教程,nodejs教学视频,node.js介绍,node.js教学,node.js怎么学,nodejs教学视频,nodejs基础教程,nodejs基础教程,内容如对您有帮助,希望把文章链接给更多的朋友!

这第一篇就谈谈NodeJs的一些编程细节吧。

1、遍历数组

这样写的一个好处就是让每次循环少一步获取数组对象长度的操作,数组长度越长,价值越明显。

2、判断变量的真假

if条件判断的结果分别是:false, true, true, true。这个结果和PHP的结果是不同的,不要混淆。还需要区分它和非恒等判断相似的情况。

3、0值非恒等判断

其实还有很多这种诡异的判断,我只列出了较为常见的。如果想弄明白其中的规则,请参阅我的另一篇博文:【JavaScript】深入分析JavaScript的关系运算和if语句。

4、parseInt的陷阱

该语句执行后n值为8,而不是。虽然很多人知道这一点,但是编程中难免会出错,我深有体会。所以,最好按下面的方式来写,就不会出错了。

5、变量在使用前一定要先声明

虽然,直接使用变量而不声明也不会出错,但是,这样写是很容易出错的。因为解释器会把它解释成全局变量,很容易和其他全局变量重名而导致出错。所以,一定要养成变量使用前要先声明的好习惯。

6、循环中存在异步的情况

你会发现,输出的结果都是相同的,而且是当i=arr.length-1时的输出内容。因为JavaScript是单线程的,它会先执行完整个循环的同步内容之后,才去执行其中的异步操作。代码中的匿名回调函数就是一个异步回调。执行到该函数的时候,for循环以及后面的一些同步操作都已经执行完毕。出于闭包原则,该函数会保留for循环的最后一次循环的sql变量和i变量的内容,所以才会导致错误的结果。

那怎么办呢?解决方法有两种,一种是使用立即函数,如下:

还有一种方法是将异步操作部分提取出来,单写一个函数,如下:

我的NodeJs学习小结(一)(node. js教程)

7 、在对大量数据作处理时,尽量避免循环嵌套。

因为循环嵌套的处理时间会随着数据量的增加成指数级增长,所以应尽量避免。遇到这种情况,如果没有更好的办法,一般采取的策略是以空间换时间,即建立一张二级循环数据的Hash映射表。当然,还要具体情况具体分析。还有一点要说的是,某些方法本身就是一个循环体,如Array.sort()(该方法应该是用了两层循环实现),在使用的时候需加注意。

8、尽量避免递归调用。

递归调用的优点是代码简洁,实现简单,而它的缺点很重要,说明如下:

(1)函数栈的大小会随着递归层次成线性增长,而函数栈是有上限值的,当递归达到一定层数后函数栈就会溢出,从而导致程序出错;

(2)每递归一层都会增加额外的压栈和出栈操作,即函数调用过程中的保存现场和恢复现场。

所以,应尽量避免递归调用。

9、关于模块文件的作用域隔离。

Node在编译JavaScript模块文件的时候,已经对其内容进行了头尾包装,如下:

从而使每个模块文件之间进行了作用域隔离。所以,当你编写NodeJs模块文件的时候,不需要自己再加一层作用域隔离封装了。如下面的代码格式,只会额外增加一层函数调用,是不推荐的:

、数组和对象不要混用

下面是错误代码的示例:

数组和对象混用可能会导致不可预知的错误。我的一个同事就遇到过一个很奇怪的问题,先看代码:

他本以为对象o的name属性会在JSON串中,结果就是没有。当时我也很奇怪,但我有预感到是数组和对象混用的问题,试了一下,果然是它的问题。后来我在ECMA规范中查到,数组在序列化时是按JA规则进行的。所以,要养成一个好的编程习惯,正确使用数组和对象,不要混用。

、promise优雅编程

相信接触过nodeJs的人都有过这样的体验,当异步回调里嵌套异步回调的时候,代码就显得很混乱,缺乏易读性。nodeJs的这一窘境可以借助promise来克服。promise就像一个雕琢器,让你的代码变得优雅、美观。promise有个A+规范,网上有几种实现方式,可以参阅。

基于promise.js实现nodejs的promises库 今天从GIT源码库中下载了promise.js,发现该源码是基于Web前端JavaScript写的,并不能直接用于nodejs。还好代码不是很多,也不是很复杂。经过分析整合,

Node.js与PHP、Python的字符处理性能对比 测试用例分为用函数和类来进行一个大字符串的字符逐一读取。测试代码Node.js函数varfs=require("fs");varcontent=fs.readFileSync("page.html",{encoding:"utf-8"});functionchar

在Linux上用forever实现Node.js项目自启动 那么能否利用forever加启动脚本方式解决上述问题呢?答案当然是肯定的,只不过有点麻烦,而且forever官方缺少详细的配置文档。我在配置的时候也走了

标签: node. js教程

本文链接地址:https://www.jiuchutong.com/biancheng/374159.html 转载请保留说明!

上一篇:nodejs中使用monk访问mongodb(nodejs mock)

下一篇:基于promise.js实现nodejs的promises库(promise实例方法)

  • 盘亏存货进项税额转出的计算公式
  • 代收代缴消费税会计分录
  • 继续教育报名发什么文件
  • 房租租赁房产税由哪方缴纳
  • 平均股东权益在利润表中怎么看
  • 不是公司员工可以举报公司不交社保吗
  • 企业可以一次性补交员工十年养老保险吗
  • 其他综合收益为什么是所有者权益
  • 如何承包消防工程公司
  • 投资性房地产转固定资产账务处理
  • 置换回房产怎么过户
  • 免税企业开了含税发票
  • 图文解析定期定额小规模纳税人怎么申报?
  • 银行回单手续费怎么找到对应金额
  • 福利费要交个人税吗
  • 增值税普通发票和普通发票的区别怎么交税
  • 物业管理公司代收水电费如何开票
  • 弥补以前年度亏损从哪里取数
  • 农产品增值税免税政策
  • 酒店行业增值税加计抵减是10%还是15%
  • window10开始菜单
  • 企业转产是什么意思
  • 控股子公司收购母公司
  • 期末余额和期初余额
  • php怎么实现代码运行功能
  • 开发产品变成什么科目了
  • 企业注销时无力缴纳社保
  • 观察者模式 mvc
  • 预定义变量是什么
  • 基于html的旅游网站设计源代码
  • phptime函数
  • 会计中利得的定义
  • 企业转让专利权属于什么收入
  • 固定资产折旧如何计算公式
  • 一般纳税人简易征收最新政策
  • 有材料成本差异的材料入库会计分录
  • 调减加计抵减额什么意思
  • 垃圾清运费属于什么服务
  • 造价咨询费计入固定资产吗
  • 税控系统技术维护费税率
  • 完税凭证是什么样子
  • 以前期间留抵税额是什么意思
  • 利得和损失计入所有者权益的情况
  • 销售费用的会计科目
  • 缴纳税款滞纳金应计入哪个科目
  • 公司发工资是私人转账的要交税吗
  • 免税发票怎么抵扣
  • 新手必看教程
  • 个人账户打流水需要本人吗
  • 餐费发票报销需提供清单吗
  • 分公司有哪些特点
  • sql server中replace()函数用法解析
  • mysql 远程连接不上
  • mysql日期字段
  • 控制windows外观和工作方式
  • windows图片密码
  • xp系统没有任何图标
  • win7系统开启无线服务
  • SonicStageMonitoring.exe是什么进程 有什么作用
  • linux socket 常用函数小结
  • win8无线网络受限 重连又好了
  • win8系统安装条件
  • win10喇叭图标有x
  • cocos2dx4.0入门
  • linux shell脚本攻略(第3版)
  • 一个简单的防偷技巧
  • 安卓手机界面设计
  • python去掉末尾的换行符
  • bootstrapcdn
  • ViewGroup onInterceptTouchEvent,ViewGroup onTouchEvent,View onTouchEvent执行顺序说明
  • 键盘事件有三个 分别是
  • 用jquery写注册界面
  • javascript精度问题的原因
  • 国家税务总局张局长
  • 税票开票员的职责
  • 福建国税电子税务局app
  • 广东省行业税负率表
  • 提高税务管理水平,降低税务风险
  • 惠济区第五中学怎么样
  • 综合所得税包括哪些内容
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设