资讯专栏INFORMATION COLUMN

Js规范

voyagelab / 3075人阅读

摘要:严格模式严格模式可在整个脚本或独个方法内被激活,它对应不同的语境会做更加严格的错误检查,严格模式页确保了代码更加的健壮,运行的也更加快速。严格模式会阻止使用在未来很可能被引入的预留关键字。

严格模式

ECMAScript5 严格模式可在整个脚本或独个方法内被激活,它对应不同的 javascript 语境会做更加严格的错误检查,严格模式页确保了 javascript 代码更加的健壮,运行的也更加快速。

严格模式会阻止使用在未来很可能被引入的预留关键字。

你应该在你的脚本中也用严格模式,最好在独立的IIFE 中应用它,避免在你的脚本第一行使用它而导致你的左右脚本都启动了严格模式,这有可能会引发一些第三方类库的问题。

变量声明

总是使用var 来声明变量,如不指定 var ,变量将被隐式的声明为全局变量,例如:

var a=b=0;//b会呗隐式的创建为全局变量,所以,请总是使用 var 来声明变量,并且使用单 var 模式(将所有的变量在函数最前面只使用一个 var 定义)。例如:
(function(){
    "use strict"
    var a=0,
    b=0,
    c=0,
    i,
    j,
    myObject();
}())

采用严格模式带来的好处是,当你手误输入错误的变量时,它可以通过报错信息来帮助你定位错误的出处。

判断真假

js中以下内容为假:
false
null
undefined
0
""
NaN

设置默认参数

辑操作符||和&&也可以被用来返回布尔值,如果操作对象为非布尔值,那每个表达式将会被自左向右的做真假判断,基于此操作,最终用有一个表达式被返回回来,这在变量赋值时,是可以用来简化你的代码的,例如:

如果 x 不存在且 y 不存在,x=1

if(!x){
    if(!y){
        x=1;
    }else{
        x=y;
    }
}
等同于:
x=x||y||1;

这一小技巧经常用来给方法设定默认的参数,

(function (log){
    "use strict";
    function multiply(a,b){
    a=a||1;
    b=b||1;
    log("Result"+a*b);    
    }
    multiply();//Result 1
    multiply(10);//Result 10
    multiply(3,NaN);//Result 3
    multiply(9,5);//Result 45
}(window.console.log));
修改内键对象的原型链

修改内建的诸如 Object.prototype 和Array,prototype 是被严厉禁止的,修改其他的内建对象比如 Function.proptype,虽危害没那么大,但始终还是会导致在开发过程中难以debug的问题,应当也要避免。

三元条件判断(if的快捷语法)

用三元操作符分配或者返回语句,在比较简单的情况下使用,避免在复杂的情况下使用,没人愿意用10行三元操作把自己的脑子绕晕,

if(x===10){
    return "valid";
}else{
    return "invalid";
}

return x===10?"valid":"invalid"
JSHint

在js规范中,有很多规范都是样式上的规范而不是在逻辑上的规范,比如尽量的使用===而不是==,我们可以使用JSHint 或者JSLint ,Javascript 代码验证工具,这种工具可以检查你的代码并提供相关的代码改进意见。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/107831.html

相关文章

  • JS常见模块化规范(CommonJS/AMD/CMD/UMD/ES6 Module)

    摘要:常见模块化方案是由社区提出的模块化方案中的一种,遵循了这套方案。是模块化规范中的一种,遵循了这套规范。中的模块化能力由两个命令构成和,命令用于规定模块的对外接口,命令用于输入其他模块提供的功能。 为什么需要模块化 在ES6出现之前,JS语言本身并没有提供模块化能力,这为开发带来了一些问题,其中最重要的两个问题应当是全局污染和依赖管理混乱。 // file a.js var name =...

    walterrwu 评论0 收藏0
  • 切图崽的自我修养-使用模块化JS

    摘要:之前的闭包也好,自执行函数也好,都是模块化的一些尝试,直到规范推出之后,模块化才真正迅猛发展起来。因为有了模块化的概念,才有了按需加载的概念。 前言 我们来玩乐高积木吧 模块化Js已经成为了老生常谈,不过在JavaScript设计之初,由于定位的问题并没有提供类的功能,开发者需要模拟出类似的功能,来隔离、组织复杂的JavaScript代码。之前的闭包也好,自执行函数也好,都是模块化的一...

    littleGrow 评论0 收藏0
  • 切图崽的自我修养-使用模块化JS

    摘要:之前的闭包也好,自执行函数也好,都是模块化的一些尝试,直到规范推出之后,模块化才真正迅猛发展起来。因为有了模块化的概念,才有了按需加载的概念。 前言 我们来玩乐高积木吧 模块化Js已经成为了老生常谈,不过在JavaScript设计之初,由于定位的问题并没有提供类的功能,开发者需要模拟出类似的功能,来隔离、组织复杂的JavaScript代码。之前的闭包也好,自执行函数也好,都是模块化的一...

    justjavac 评论0 收藏0
  • 关于JavaScript模块规范之CommonJSAMDCMD

    摘要:所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行。也采用语句加载模块,但是不同于,它要求两个参数第一个参数,是一个数组,里面的成员就是要加载的模块第二个参数,则是加载成功之后的回调函数。 本篇文章来自对文章《js模块化编程之彻底弄懂CommonJS和AMD/CMD!》的总结,大部分摘自文章原话,本人只是为了学习方便做的笔记,之后有新的体会会及时补充...

    binaryTree 评论0 收藏0
  • 简单理解CommonJS规范

    摘要:事实上已经出现了模块规范,如果使用的模块规范是无需环境的。因此,需要将规范和的模块规范区分开来。三模块规范的好处模块规范很好地解决变量污染问题,每个模块具有独立空间,互不干扰,命名空间等方案与之相比相形见绌。 写在前面:  一个文件就是一个模块。   另外本文中的示例代码需要在node.js环境中方可正常运行,否则将出现错误。事实上ES6已经出现了模块规范,如果使用ES6的模块规范是无...

    王笑朝 评论0 收藏0
  • 从 1 到完美,写一个 js 库、node 库、前端组件库

    摘要:从到完美,写一个库库前端组件库之前讲了很多关于项目工程化前端架构前端构建等方面的技术,这次说说怎么写一个完美的第三方库。使用导出模块,就可以在使用这个库的项目中构建时使用功能。 从 1 到完美,写一个 js 库、node 库、前端组件库 之前讲了很多关于项目工程化、前端架构、前端构建等方面的技术,这次说说怎么写一个完美的第三方库。 1. 选择合适的规范来写代码 js 模块化的发展大致有...

    rollback 评论0 收藏0

发表评论

0条评论

voyagelab

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<