CoffeeScript学习(2)—— 变量
变量基础
对于变量的定义的话,形式如下所示
xxx = yyy
------编译后------
var xxx = yyy;
保留字
我们知道,在原生js中的保留字是不能作为变量名或者属性名的。如果我们确实需要特殊的属性名,则使用方括号的方式进行命名。
像这样:var obj["class"] = "hello";
但是这样的代码没有了一致性。在coffee里,做了统一的处理,我们可以来看看
obj.class = 'Yika'
------编译后------
obj["class"] = 'Yika';
我们再不需要担心自己的变量名是保留字的了。但请记住,仅仅是处理保留字,不包括数字等不合法变量名。
词法作用域
我们不需要为变量提供一个var
,因为coffee会为我们自行声明变量,让我们不需手动去写var
。但鉴于这个的原因,在写深层次嵌套的代码时,请不要让外部变量和内部变量同名,增加麻烦。我们可以看一下例子。
outer = 1
changeNumber = ()->
inner = 2
outer = 3
inner = new Obj()
----------编译后----------
var changeNumber, inner, outer;
outer = 1;
changeNumber = function() {
var inner;
inner = 2;
return outer = 3;
};
inner = new Obj();
我们可以看到,outer是在外层定义的,然后在函数内部再定义一次,就会对外部变量进行赋值。而inner的表现却不尽相同。如果没定义过inner,则函数内部的inner会成为一个局部变量。鉴于这种比较容易出错的特性,所以我们建议一旦要使用局部变量,请一定不要和外部变量重名,以免带来不必要的麻烦。
CoffeeScript学习(2)—— 变量的更多相关文章
- js学习之变量、作用域和内存问题
js学习之变量.作用域和内存问题 标签(空格分隔): javascript 变量 1.基本类型和引用类型: 基本类型值:Undefined, Null, Boolean, Number, String ...
- PHP学习(变量)
PHP学习(变量) 1. PHP属于松散类型,创建变量时不用指定类型. 2.变量命名规范: 1)第一个字符必须是$ 2)$后的第一个字符必须是 字母 或 下划线 3)其他字符可以是 字母, 数字, 下 ...
- CoffeeScript学习(3)—— 函数
CoffeeScript函数 如果大家有看我之前关于ES6的箭头函数的话,这一篇也不会很难理解.我们这一次可以说一下,关于两者的一些细微差别. 基本 在CoffeeScript中,任何函数都是用箭头函 ...
- CoffeeScript学习(1)——Quick Start
什么是CoffeeScript CoffeeScript 是一门编译到 JavaScript 的小巧语言. 在 Java 般笨拙的外表下, JavaScript 其实有着一颗华丽的心脏. Coffee ...
- coffeeScript学习02
闭包 closure = do -> _private = "foo" -> _private console.log(closure()) #=> " ...
- coffeeScript学习01
安装 这里使用node.js npm install -g coffee-script # watch and compile coffee -w --output lib --compile src ...
- JavaScript系统学习小结——变量、作用域和内存问题
趁着写完小论文还未彻底消散的学习氛围,开始着重巩固自己JavaScript的基础知识,为秋招做最基本的准备. 变量:Js的变量可能保存两种不同数据类型的值:基本类型值和引用类型值. 基本类型包括:Un ...
- python学习Day3 变量、格式化输出、注释、基本数据类型、运算符
今天复习内容(7项) 1.语言的分类 -- 机器语言:直接编写0,1指令,直接能被硬件执行 -- 汇编语言:编写助记符(与指令的对应关系),找到对应的指令直接交给硬件执行 -- 高级语言:编写人能识别 ...
- ES6学习之变量的解构赋值
前言:什么是ES6?ECMAScript 6(简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.其中相比较于ES5新增了诸多的特性,并且ES6可转换为ES5的语法.- ...
随机推荐
- ubuntu13.04下载android4.0.1源码过程
最初我参考的是老罗的博客http://blog.csdn.net/luoshengyang/article/details/6559955 进行下载安装的,但弄着弄着就发现不太对劲了.这里记录下详细过 ...
- 用代码编辑数据库T-SQL语句
1.创建表 create table Car( Code varchar(50) primary key, Name varchar(50), Time date, Price float, Bran ...
- [51NOD1126]求递推序列的第n项(矩阵快速幂)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1126 存在参数a,b为负数的情况.这时候要这么处理: 根据mo ...
- C#将HTML导出Excel
首先这个 不能用ajax 操作,不过 我现在讲的 这个方法和ajax 的效果一样. 你在你需要导出的页面写个方法 function DaoChu () { location.href = " ...
- php通过curl调用jpush接口实现消息的推送
public function actionNotifyto() { //$regid = $_REQUEST['regid']; $url = 'https://api.jpush.cn/v3/pu ...
- symbolicatecrash位置
symbolicatecrash是一个隐藏工具,它在我的Mac中的具体路径如下(Xcode6.1.app请换成你的Xcode名称) /Applications/Xcode6.1.app/Content ...
- HDU 5284 wyh2000 and a string problem(字符串,水)
题意:比如给你一个串,要求判断wyh是不是它的子序列,那么你只需要找一个w,找一个y,再找一个h,使得w在y前面,y在h前面即可.有一天小学生拿着一个串问他“wyh是不是这个串的子序列?”.但是wyh ...
- jQuery的威力
jQuery如此之好用,和其在获取对象时使用与CSS选择器兼容的语法有很大关系,毕竟CSS选择器大家都很熟悉(关于CSS选择器可以看看十分钟搞定CSS选择器),但其强大在兼容了CSS3的选择器,甚至多 ...
- uestc 1720无平方因子数
求素数 然后容斥原理// n之内有平方因子的数的个数sum =n/(2^2) + n/(3^2)+……+n/(k^2) - n/(2^2 * 3^2)-……+……. // #pragma commen ...
- Java基础——I/O续
目录 二进制I/O类 文件导航和I/O 二进制I/O类 FileInputStream类和FileOutputStream类 *FileOutputStream(file: File) *FileOu ...