首页
学习
活动
专区
圈层
工具
发布

如何写出优雅的 JS 代码,变量和函数的正确写法

让你的变量名可被读取,像 buddy.js 和 ESLint 这样的工具可以帮助识别未命名的常量。 // 不好的写法 // 86400000 的用途是什么?..."; // ... } // 好的写法 function createMicrobrewery(name = "Hipster Brew Co.") { // ... } 函数 函数参数(理想情况下为...JS 中是一种不好的做法,因为可能会与另一个库发生冲突,并且在他们的生产中遇到异常之前,API 的用户将毫无用处。...让我们考虑一个示例:如果想扩展 JS 的原生Array方法以具有可以显示两个数组之间差异的diff方法,该怎么办?...当具有if语句的类和函数时,这是在告诉你的使用者该函数执行不止一件事情。 不好的写法 class Airplane { // ...

4.6K30

jQuery入口函数的写法

一般建议在body标签中写入口函数,就是为了等页面加载完成后才执行入口函数。 案例: js的入口函数执行要比jQuery的入口函数执行得晚一些。...jquery的入口函数会等待页面的加载完成才执行,但是不会等待图片的加载。 js的入口函数会等待页面加载完成,并且等待图片加载完成才开始执行 //js的入口函数执行要比jQuery的入口函数执行得晚一些。...//jq的入口函数会等待页面的加载完成才执行,但是不会等待图片的加载。 //js的入口函数会等待页面加载完成,并且等待图片加载完成才开始执行。...() { console.log("这是jQuery入口函数的第一种写法"); }); $(function () { console.log("这是jQuery入口函数的第二种写法

2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JS通用模块写法

    模块化这个问题并非一开始就存在,WWW 刚刚问世的时候,html,JavaScript,CSS(JS 和 CSS 都是后来在网景被引进浏览器的)都是极其简单的存在,不需要模块化。...在 ES6 以前,JS 语言没有模块化,如何让 JS 不止运行在浏览器,且能更有效的管理代码, 于是应运而生 CommonJS 这种规范,定义了三个全局变量: require,exports,module...require 用于引入一个模块 exports 对外暴露模块的接口,可以是任何类型 module 是这个模块本身的对象 用 require 引入时获取的是这个模块对外暴露的接口(exports) Node.js...CommonJS 的风格, 而 AMD 用了一种更简洁的依赖注入和函数返回的方式实现模块化。...window : global; 我们用一个立刻执行的闭包函数将所有代码包含,来避免污染全局空间,并将 global 对象传入闭包函数,最终变成这样: (function (global) { var

    3K10

    js中(function(){})()的写法用处

    以前看到老师写js的单例模式时疑惑为什么要这么写 var singleton = (function () { var privateVariable; function privateFunction...中(function(){…})()立即执行函数写法理解,终于了解了。...来来来,首先嘛,JS中函数有两种命名方式 1、一种是声明式。 而声明式会导致函数提升,function会被解释器优先编译。即我们用声明式写函数,可以在任何区域声明,不会影响我们调用。...function XXX(){}1 2、一种是函数表达式 函数表达式我们经常使用,而函数表达式中的function则不会出现函数提升。而是JS解释器逐行解释,到了这一句才会解释。...fn1(); function fn1(){}//可以正常调用 fn2(); var fn2 = function(){}//无法调用 OK,下面进入正题,对函数表达式加上(),是可以直接调用的 但是如果是对声明式的后部加上

    4.9K00

    学会TypeScript中函数重载写法

    大多数函数接受一组固定的参数。 但有些函数可以接受可变数量的参数,不同类型的参数,甚至可以根据你调用函数的方式返回不同的类型。为了注释这样的函数,TypeScript 提供了函数重载功能。 1....函数签名 我们先来考虑一个函数,它返回给一个特定的人的问候信息。...`; } 上面的函数接受1个字符类型的参数:人的名字。调用该函数是非常简单的: greet('World'); // 'Hello, World!' 如果你想让 greet()函数更加灵活,怎么办?...直接更新函数签名以支持多种调用方式是一种常见的好方法。 然而,在某些情况下,我们可能需要采用另一种方法,分别定义你的函数可以被调用的所有方式。这种方法被称为函数重载。...何时使用函数重载 函数重载,如果使用得当,可以大大增加可能以多种方式调用的函数的可用性。这在自动补全时特别有用:我们会在自动补全中列出所有可能的重载记录。

    2.6K10

    父类返回子类类型的函数写法

    不过由于我们的这个 Event 的类型比较多,因此希望写一个父类,来一个子类感受下: class DisposableEventBuilder : EventBuilder() { private....build() 我们调用完父类的 retryLimit 方法后,想要设置下 delay,结果发现没有这个方法。 “我 X,这什么玩意儿”,你嘟囔了一句。 因为返回的是父类,所以链式调用掉链子了。...,那么这样的话我们就可以在返回自身类型的位置返回 T 这个类型了。...子类的改动就很简单了,只需要给父类加一个泛型参数为自己的类型即可: class DisposableEventBuilder : EventBuilder...() { ... } 其他的什么也不用动,这时候我们的链式调用就没啥问题了: DisposableEventBuilder().retryLimit(3) .delay(60_

    6.7K10

    MySQL存储过程和函数简单写法

    函数   在MySQL中,创建存储函数的基本形式如下: CREATE FUNCTION sp_name ([func_parameter[,...]])...RETURNS type  [characteristic ...] routine_body   其中,sp_name参数是存储函数的名称;func_parameter表示存储函数的参数列表;RETURNS...func_parameter可以由多个参数组成,其中每个参数由参数名称和参数类型组成,其形式如下:param_name type   其中,param_name参数是存储函数的参数名称;type参数指定存储函数的参数类型...【示例2】 下面创建一个名为name_from_employee的存储函数。...该函数的使用和MySQL内部函数的使用方法一样。 变量的使用 在存储过程和函数中,可以定义和使用变量。用户可以使用DECLARE关键字来定义变量。然后可以为变量赋值。

    2.3K20

    ​C++ Swap函数有几种写法?

    在说C++模板的方法前,我们先想想C语言里面是怎么做交换的。...void swap(char** a , char** b) { char* tmp = *a ; *a= *b; *b= tmp ; } 上面的方法都是按特定的类型做的处理,有没更通用的写法...T temp(a); a = b; b = temp; } } template 是c++里面很重要的概念,利用模板可以实现很多通用的算法。...上面的std::swap要求T类实现拷贝构造函数,并且和上面几个实现一样都需要做赋值运算,在海量的交易请求里面会损耗性能。 因此在C++11的标准里面对实现做了优化。...看看上面字符串类的交换只需要交换地址即可,根据这种思路在通用的swap只交换指针,而不是赋值。这样的实现能将性能提高不少,对大型对象效率明显提现。

    2.2K20

    node.js模块化写法入门

    子模块的写法: function SVN(){ console.log('svn initialized'); return this; } function getInstance(.../lib/svn.js'); var svn1 = new SVN(); var svn2 = SVN.getInstance(); svn1和svn2就分别对应上述的两种公开方式。...我觉得习惯上,如果这个模块就是一个类,那么用第一种方法比较合适;如果这个就是一个工具库,只是静态函数,那么用第二个方式;如果这个模块其实包含很多个类,那么还是第二个方式,这个模块就变了一个包(package...)或者说命名空间,例如: 搞个define.js,假设person.js导出了一个Person类,animal.js导出一个Animal类 module.exports.Person = require.../define.js'); var person = new define.Person(); var animal = new define.Animal(); 嗯,非常有面向对象的感觉。。。

    2.6K60

    Strve.js这样写法像不像React?

    上周自己抽时间把Strve.js升级了一下,现在目前版本是2.3.3。有兴趣的朋友可以去官方文档查阅一下。说到官方文档,之前有位朋友说我的文档缺乏可视化界面,就是那种在线编辑插件。...属性参数; 视图模板支持Class类写法; 这次改动也挺大的,主要是内部的整体优化。...但是还是遇到了问题,那就是虚拟DOM量级的问题,因为Strve.js内部跟React.js相似,都是数据变化后,通过新老数据的计算 Diff 来得知数据的变化。...在上面我们说到React.js,我们常用的方式就是在Class类中写JSX。那么,使用Strve.js其实也可以。...(图一) (图二​) Strve.js这次升级的亮点还有很多,可以打开优化后的官方文档查阅,以下有两种方式可供选择(复制以下地址到浏览器)。

    2.6K10
    领券