[ES6系列-05]字符串相关操作更方便

【原创】码路工人 Coder-Power

大家好,这里是码路工人有力量,我是码路工人,你们是力量。

github-pages
博客园cnblogs


今天的内容是,关于 ES6 JavaScript 中字符串操作的变化。


1. 模板字符串 Template String

之前要拼接一段字符串,包括插入变量的值,要用一堆引号和加号。
量小还凑合,大量拼接的话,人力手工就难以应付了,而且很容易出错。

比如,就是要手动(别问为什么,现找个例子不容易)去生成一个这样的片段,如图:

Read More

[ES6系列-03]ES6中关于参数相关特性详解(参数默认值与参数解构赋值与剩余参数)

【原创】码路工人 Coder-Power

大家好,这里是码路工人有力量,我是码路工人,你们是力量。

github-pages
博客园cnblogs


今天总结一下 ES6 中跟参数相关的内容。
欢迎补充斧正、留言交流。
让我们互相学习一起进步。

  • 1. ES6 参数默认值(非必需参数/可选参数)

    在 ES6 之前,函数的参数是无法设默认值的,聪明的人们当然有变通的方式,通过判断来参在函数刚开始给它赋上预想的初始值。具体在这篇里有介绍。

    扩展阅读: ES5 中参数默认值的手动实现

    到了 ES6,就可以愉快地设定参数默认值了。在下面的defaultParamInEnd函数中,用age = 18来设了默认值。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    /* eg.0
    * set default value for parameters
    */
    //-------------------------------------------------

    const defaultParamInEnd = function(name, age = 18) {
    console.log(`name: ${name} -- age: ${age}`)
    }

    defaultParamInEnd("Coder Power")
    // name: Coder Power -- age: 18

    defaultParamInEnd("Coder Power", 32)
    // name: Coder Power -- age: 32

    //-------------------------------------------------

    上面的例子中,设默认值放在了末尾,也是我们 CSharper 惯用的方式,当多个参数有默认值时也是连续地放在尾部。

    C# 中不允许设默认值的参数出现在中间或者不连续,所有可选参数必须放在必需参数的后面。

    js 中可不可以,带默认值的参数(也就是非必须参数),不在最后的位置呢?下面例子中我们来试一下。

Read More

ES5中参数默认值的手动实现

ES5 中语法级别不支持在形参处直接指定默认值,

要想让参数有默认值,就要在函数的开头,给赋上默认值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* eg.0
* default value of parameter in ES5
*/
//-------------------------------------------------

function defaultVal(productCode, price) {
price = price || 99;

console.log(`Code: ${ productCode }, Price: ${ price }`)
}

defaultVal("BT-X") // Code: BT-X, Price: 99
defaultVal("BT-X", null) // Code: BT-X, Price: 99
defaultVal("BT-X", 0) // Code: BT-X, Price: 99
defaultVal("BT-X", false) // Code: BT-X, Price: 99
defaultVal("BT-X", 100) // Code: BT-X, Price: 100

//-------------------------------------------------

这里的 || 逻辑与运算符,并不用来得出一个真假的结果,

而是检查 price 是否有值,没值的时候就给它个 99 ,

实际上这存在一个问题,就是,

  • undifined
  • null
  • 0
  • false

的时候,都给 price 赋了默认值 99, 而我们期望的却不是,比如(只是比如),
只让它在 undefined 的情况下赋默认值。

Read More

[ES6系列-02]Arrow Function:Whats this?(箭头函数及它的this及其它)

【原创】码路工人 Coder-Power

大家好,这里是码路工人有力量,我是码路工人,你们是力量。

github-pages
博客园cnblogs


如果没用过CSharp的lambda 表达式,也没有了解过ES6,那第一眼看到这样代码什么感觉?

1
2
3
4
5
6
7
/* eg.0
* function definition
*/

var arr = [1,2,3,5,8,13,21]

arr.forEach(n => console.log(n))

数组的forEach 方法里需要传入一个函数(没用过 CSharp 里委托 delegate 的也许会觉得奇怪,js 里参数竟然可以是一个方法,其实 C# 里也是早就有的),这n =>是什么鬼?

这是今天要说的主角,箭头函数Arrow Function

Read More

[ES6系列-01]Class:面向对象的“新仇旧恨”

【原创】码路工人 Coder-Power

大家好,这里是码路工人有力量,我是码路工人,你们是力量。

github-pages
博客园cnblogs


这是公众号(码路工人有力量)开通后的第二篇,写得还是有待改进吧。
这次准备写一个关于ES6基础的短文系列,努力尽快更完。
欢迎关注分享,一起学习提高吧。
QRCode/微信订阅号二维码
CoderPowerQRCode


今天主要聊聊JS中的面向对象即类的使用,先来看看ES5中的传统实践,再对比ES6中的便利优雅,面向未来又不忘历史。

1. ES5中的类与继承

1.1 function 是函数,也是类

先来一段例子代码

Read More

三分钟带你玩转JS中的==与===

【原创】码路工人 Coder-Power

大家好,这里是码路工人有力量,我是码路工人,你们是力量。

github-pages
博客园cnblogs


相信很多童鞋在刚刚接触做web用到javascript时,会搞不太清楚 ===== 的具体区别及用法,今天就来总结一下,欢迎交流补充及谬误斧正。

0. 让我们在例子中观察一下

1
2
3
4
5
6
7
8
9
//eg.1 ==
console.log(1 == true) // true
console.log(0 == false) // true


//eg.2 ===
console.log(1 === true) // false
console.log(0 === false) // false
// false

思考以上eg.1中,如何做的隐式类型转换,让我们得到了上面两个true的结果呢。

Read More