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的语法.- ...
随机推荐
- oracle .bash_profile
[oracle@redhat4 ~]$ vi .bash_profile # .bash_profile # Get the aliases and functionsif [ -f ~/.bashr ...
- mysql 行列动态转换(列联表,交叉表)
mysql 行列动态转换(列联表,交叉表) (1)动态,适用于列不确定情况 create table table_name( id int primary key, col1 char(2), col ...
- kendo ui grid控件在选择行时如何取得所选行的某一列数据
$("#grid").kendoGrid({ dataSource: dataSrc, columns: [ { template: '#=material_id#', width ...
- busybox filesystem ifup
/******************************************************************** * busybox filesystem ifup * 声明 ...
- LeetCode: 3SumClosest
Title : Given an array S of n integers, find three integers in S such that the sum is closest to a g ...
- 函数与关系实例,函数运算与SQL,试验与关系元组
函数是一个集合,它的每个元素都是二元组或多元组.例如 f = { (x, y) | x∈R & y∈R & y = 2x } ,g = { (x, y, z) | (x, y, z)∈ ...
- 【unity3D】鼠标控制camera的移动、放大(俯视浏览效果、LOL摄像机移动效果)
在Unity开发中,用鼠标滚轮来实现摄像机的视野范围,鼠标左键拖拉控制摄像机的移动,代码如下: 1.俯视浏览效果 using UnityEngine; using System.Collections ...
- 【转】正确理解PHP程序编译时的错误信息
我们编写程序时,无论怎样小心谨慎,犯错总是在所难免的.这些错误通常会迷惑PHP编译器.如果开发人员无法了解编译器报错信息的含义,那么这些错误信息不仅毫无用处,还会常常让人感到沮丧. 编译PHP脚本时, ...
- redis发布/订阅模式
其实在很多的MQ产品中都存在这样的一个模式,我们常听到的一个例子 就是邮件订阅的场景,什么意思呢,也就是说100个人订阅了你的博客,如果博主发表了文章,那么100个人就会同时收到通知邮件,除了这个 场 ...
- Front-End-Develop-Guide
这份文件包含一系列用于面试审查求职者(候选人)的前端面试问题.这并不推荐把每个问题都问在同一个求职者(因为这会花几个小时的时间).从列表中抽取一些问题能够帮助你审查你需要求职者具备的一些技能. 注: ...