变量基础

对于变量的定义的话,形式如下所示

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)—— 变量的更多相关文章

  1. js学习之变量、作用域和内存问题

    js学习之变量.作用域和内存问题 标签(空格分隔): javascript 变量 1.基本类型和引用类型: 基本类型值:Undefined, Null, Boolean, Number, String ...

  2. PHP学习(变量)

    PHP学习(变量) 1. PHP属于松散类型,创建变量时不用指定类型. 2.变量命名规范: 1)第一个字符必须是$ 2)$后的第一个字符必须是 字母 或 下划线 3)其他字符可以是 字母, 数字, 下 ...

  3. CoffeeScript学习(3)—— 函数

    CoffeeScript函数 如果大家有看我之前关于ES6的箭头函数的话,这一篇也不会很难理解.我们这一次可以说一下,关于两者的一些细微差别. 基本 在CoffeeScript中,任何函数都是用箭头函 ...

  4. CoffeeScript学习(1)——Quick Start

    什么是CoffeeScript CoffeeScript 是一门编译到 JavaScript 的小巧语言. 在 Java 般笨拙的外表下, JavaScript 其实有着一颗华丽的心脏. Coffee ...

  5. coffeeScript学习02

    闭包 closure = do -> _private = "foo" -> _private console.log(closure()) #=> " ...

  6. coffeeScript学习01

    安装 这里使用node.js npm install -g coffee-script # watch and compile coffee -w --output lib --compile src ...

  7. JavaScript系统学习小结——变量、作用域和内存问题

    趁着写完小论文还未彻底消散的学习氛围,开始着重巩固自己JavaScript的基础知识,为秋招做最基本的准备. 变量:Js的变量可能保存两种不同数据类型的值:基本类型值和引用类型值. 基本类型包括:Un ...

  8. python学习Day3 变量、格式化输出、注释、基本数据类型、运算符

    今天复习内容(7项) 1.语言的分类 -- 机器语言:直接编写0,1指令,直接能被硬件执行 -- 汇编语言:编写助记符(与指令的对应关系),找到对应的指令直接交给硬件执行 -- 高级语言:编写人能识别 ...

  9. ES6学习之变量的解构赋值

    前言:什么是ES6?ECMAScript 6(简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.其中相比较于ES5新增了诸多的特性,并且ES6可转换为ES5的语法.- ...

随机推荐

  1. BZOJ 2337 XOR和路径(高斯消元)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2337 题意:给定一个带权无向图.从1号点走到n号点.每次从当前点随机(等概率)选择一条相 ...

  2. bzoj2823

    最小圆覆盖 有个东西叫作随机增量法,具体可以baidu 这里来说说怎么求三点共圆 这其实就是求两条线段的交点 在编程中,我们解方程是比较麻烦的一个比较好的方法是利用相似三角形 设线段AB,CD交P,则 ...

  3. UVa 11732 (Tire树) "strcmp()" Anyone?

    这道题也是卡了挺久的. 给出一个字符串比较的算法,有n个字符串两两比较一次,问一共会有多少次比较. 因为节点会很多,所以Tire树采用了左儿子右兄弟的表示法来节省空间. 假设两个不相等的字符串的最长公 ...

  4. Java [Leetcode 66]Plus One

    题目描述: Given a non-negative number represented as an array of digits, plus one to the number. The dig ...

  5. TS数据结构分析

    1.TS包得数据结构 2. // Transport packet headertypedef struct TS_packet_header{    unsigned sync_byte       ...

  6. 【转】定时器、sigevent结构体详解

    原文网址:http://blog.163.com/zheng_he_xiang/blog/static/18650532620116311020390/ 最强大的定时器接口来自POSIX时钟系列,其创 ...

  7. ByteBuffer用法小结

    在NIO中,数据的读写操作始终是与缓冲区相关联的.读取时信道(SocketChannel)将数据读入缓冲区,写入时首先要将发送的数据按顺序填入缓冲区.缓冲区是定长的,基本上它只是一个列表,它的所有元素 ...

  8. Android 开发框架介绍

    一.概述 现android开发有很多开发框架使用,做App不一定用到框架,但好框架的思想也是值得学习.选择合适的开发框架可提供实用功能,简化项目开发提升效率. 二.Afinal框架 简介 Afinal ...

  9. Android-监听sdcard状态

    public class MyService extends Service { private static final String TAG = "MyService"; Fi ...

  10. Oracle 创建和使用视图

    一.what(什么是视图?) 1.视图是一种数据库对象,是从一个或者多个数据表或视图中导出的虚表,视图所对应的数据并不真正地存储在视图中,而是存储在所引用的数据表中,视图的结构和数据是对数据表进行查询 ...