在coffeescript中声明和屏蔽模块变量
2013-08-16 10:48
344 查看
coffeescript中所有变量默认为局部变量,也就是说任何函数内部的非闭包变量赋值都将在函数头部产生该变量的var声明。非闭包变量指的是:该变量没有在包裹该函数的外部函数和模块中声明过。
因此,如果想避免在函数内部的var声明,使变量赋值具有模块级的效果,可以在模块头部增加对该变量的赋值,这样该变量将只在模块头部,而不再在函数头部产生var声明。
如果在函数内部希望屏蔽外部的声明怎么办?借助回引号标记法产生原始js代码。
示例:
x = 0
f = () ->
`var x` #如无此行,下一赋值直接修改外部的x
x = 1
f()
console.log x #如果没有`var x`则显示0,否则显示1.
因此,如果想避免在函数内部的var声明,使变量赋值具有模块级的效果,可以在模块头部增加对该变量的赋值,这样该变量将只在模块头部,而不再在函数头部产生var声明。
如果在函数内部希望屏蔽外部的声明怎么办?借助回引号标记法产生原始js代码。
示例:
x = 0
f = () ->
`var x` #如无此行,下一赋值直接修改外部的x
x = 1
f()
console.log x #如果没有`var x`则显示0,否则显示1.
相关文章推荐
- python3 - 声明全局变量并在不同模块中的使用.
- jsp中如何将表单中获取的内容通过自己声明的变量插入到数据表中
- C++学习笔记(一)(变量、声明、定义、引用)
- javascript函数内部用var声明临时变量需要注意的
- JS面试中的的变量提升和函数声明
- C#语言学习:变量的声明与初始化的范围(对比C++)
- 一:PHP语言基础_PHP变量_声明变量和作用域
- C++ Primer学习笔记——变量声明和定义
- Effective C++:条款22:将成员变量声明为private
- C语言学习笔记(一)变量声明的规则
- [js]js的惰性声明, js中声明过的变量(预解释),后在不会重新声明了
- python3 动态模块导入与全局变量使用
- vs下C语言变量声明要放在前面的原因?(空文档)
- oracle存储过程、声明变量、for循环
- JavaScript中声明变量有无var
- 变量定义和声明的区别
- FPGA学习笔记(二)模块建立及变量连接
- Item1:Declare data members private--将所有成员变量声明为private
- 声明变量类型
- 变量 和函数声明提前问题