cs总结
基础
熟悉
1 | # 列表解析 |
命令行
编译命令,1
coffee -c -o targetfolder filename
先是两个参数,然后是目标文件夹,最后是编译的文件
数组
- 数组换行可以省略一个逗号,那就都换行吧,彻底抛弃逗号
- 直接加尾巴截取数组,还可以直接用来赋值
1
[0...10]
对象
- 对象的花括号用缩进代替
函数
函数的区别,
- 定义的时候有括号,调用的时候没括号,调用的时候没有参数也需要括号
- 函数没有大括号,用箭头识别,箭头左边小括号里放参数,右边是函数体
- 函数默认返回函数体最后一个表达式的值,可以省略return
- 空return取消return
- 变量不需要声明,所以函数名也不需要声明
- 默认参数
- 胖箭头函数,作用只是绑定this? 需要返回一个绑定this的函数的时候使用
async函数
直接把await写在普通函数里
词法作用域和变量安全
词法作用域
变量安全
- 函数的所有 CoffeeScript 结果都被一个匿名函数包裹
1 | (function(){ ... })(); |
这层安全的封装, 加上自动生成的 var 关键字,使得不小心污染全局命名空间很难发生.
- 因为被包裹了,用顶层变量, 需要将其作为赋值在 window 上, 或者在 CommonJS 里的 exports 上.
- 存在操作符(existential operator)可以帮你写出一个可靠的方式找到添加位置; 比如你的目标是同时满足 CommonJS 和浏览器: exports ? this
4.
判断语句
- 一个判断一个赋值的判断简写
1 | name = value if condition |
- 普通写法,和js相比就是省略了条件的小括号和函数体的大括号
- 三元判断符
1 | name = if condition then rightvalue else wrongvalue |
- unless: 不是… ,就执行,是就跳过
1 | return 哈哈哈 unless 嘿嘿嘿 |
if else 和unless都可以,看个人喜好
变参
变参函数定义,参数后加上…
变参函数调用,函数调用后加上…
循环和推导式
for in遍历数组
1 | item-operation for item in 数组 |
两个参数
1 | for in 循环的参数,第一个是值,i是index |
加上判断1
item-operation for item in 数组 when item isnt value
by控制循环的跨度
for of 遍历对象
1 | #遍历所有键值对 |
while和until
1 | # 满足条件就一直执行 |
for in + do
配合起来,对每一个满足条件的元素执行操作
alias
CoffeeScript | JavaScript |
---|---|
is | === |
isnt | !== |
not | ! |
and | && |
or | |
ture,yes,on | true |
false,no,off | false |
@,this | this |
a in b | [].indexOf.call(b,a) >=0 |
a of b | a in b |
for a form b | for (a of b) |
a ** b | Math.pow(a,b) |
a // b | Math.floor(a/b) |
a %% b | (a % b + b) % b |
存在性操作符
1 | ?name |
自己的总结
- 没有冒号
- 没有括号,用换行和缩进控制层级
- 数组的省略写法
- 编译之后给module.exports外面套一层自执行函数对导出模块没有影响
- if判断里面没有默认return
问题
控制返回值,不想让它包裹一层然后返回,可以写
return 那么对async函数有影响
资料
不喜欢的地方
- 关于语义化的思考
- 调用函数的时候,前面一个参数较复杂,后面一个参数需要仔细辨别,没有括号直观
3.
文章标题:cs总结
本文作者:Benny
发布时间:2020-06-08, 19:49:32
最后更新:2018-06-14, 10:56:48
原始链接:https://benny233.github.io/2020/06/08/cs总结/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。