运算符 是一类数学符号,可以根据两个值(或变量)产生结果。以下表格中介绍了一些最简单的运算符,可以在浏览器控制台里尝试一下后面的示例。
译注:这里说“根据两个值(或变量)产生结果”是不严谨的,计算两个变量的运算符称为“二元运算符”,还有一元运算符和三元运算符,下表中的“取非”就是一元运算符。
运算符 解释 符号 示例加 将两个数字相加,或拼接两个字符串。 + 6 + 9;"Hello " + "world!";
减、乘、除 这些运算符操作与基础算术一致。只是乘法写作星号,除法写作斜杠。 -, *, / 9 - 3;8 * 2; //乘法在JS中是一个星号9 / 3;
赋值运算符 为变量赋值(你之前已经见过这个符号了) = let myVariable = \'李雷\';
等于 测试两个值是否相等,并返回一个 true/false (布尔)值。 === let myVariable = 3;myVariable === 4; // false
不等于 和等于运算符相反,测试两个值是否不相等,并返回一个 true/false (布尔)值。 !== let myVariable = 3;myVariable !== 3; // false
取非 返回逻辑相反的值,比如当前值为真,则返回 false。 ! 原式为真,但经取非后值为 false: let myVariable = 3;!(myVariable === 3); // false
运算符种类远不止这些,不过目前上表已经够用了。完整列表请参阅 。
注:不同类型数据之间的计算可能出现奇怪的结果,因此必须正确引用变量,才能得出预期结果。比如在控制台输入 "35" + "25",为什么不能得到 60?因为引号将数字转换成了字符串,所以结果是连接两个字符串而不是把两个数字相加。输入 35 + 25 才能得到正确结果。
= 是赋值运算符,a = 12 表示把 “12” 赋值给变量 a。
如果你需要比较两个值,可以使用 ==,例如 a == 12。
JavaScript 中还有个独特的 === 运算符,它能够比较两边的值和类型是否全都相同。(类型是指 string, number 这些):
a = "12"; a == 12; // true a === 12; // false大多数情况下,我们都推荐使用 === 运算符来比较两个值,因为希望比较两个不同类型但有着相同值的情况是比较少见的。
下面是 JavaScript 判断两个值是否不相等的比较运算符:
a = 12; a !== 11; // true! 运算符还可以单独使用,用来对一个 boolean 值取反:
a = true; !a; // false! 运算符总会得到一个 boolean 类型的值,所以可以用来将非 boolean 类型的值转为 boolean 类型:
a = 12; !a; // false !!a; // true或者:
a = 0; !a; // true !!a; // false 代码风格最后,下面这些代码风格上的规则能帮助我们写出更清晰明确的代码:
使用驼峰命名法:定义 myRandomVariable 这样的变量名,而不是 my_random_variable
在每一行结束时写一个 ;,尽管在 JavaScript 里行尾的 ; 是可以忽略的
在每个关键字前后都加上空格,如 a = b + 1,而不是 a = b + 1
组合我们学到的知识以上基础的 JavaScript 语法知识已经介绍完了,下面我们来看看能否理解实际的脚本代码:
var Comp = cc.Class({ extends: cc.Component, properties: { target: { default: null, type: cc.Entity } }, onStart: function () { this.target = cc.Entity.find(\'/Main Player/Bip/Head\'); }, update: function () { this.transform.worldPosition = this.target.transform.worldPosition; } });这段代码向引擎定义了一个新组件,这个组件具有一个 target 参数,在运行时会初始化为指定的对象,并且在运行的过程中每一帧都将自己设置成和 target 相同的坐标。
让我们分别看下每一句的作用(我会高亮有用的语法模式):
var Comp = cc.Class({:这里我们使用 cc 这个对象,通过 点语法 来调用对象的 Class() 方法(该方法是 cc 对象的一个属性),调用时传递的参数是一个匿名的 JavaScript 对象({})。
target: { default: null, type: cc.Entity }:这个键值对声明了一个名为 target 的属性,值是另一个 JavaScript 匿名对象。这个对象定义了 target 的默认值和值类型。
extends: cc.Component:这个键值对声明这个 Class 的父类是 cc.Component。cc.Component 是 Cocos Creator 的内置类型。
onStart: function () {:这一对键值定义了一个成员方法,叫做 onStart,它的值是一个匿名函数。
this.target = cc.Entity.find(\':在这一句的上下文中,this 表示正在被创建的 Component 组件,这里通过 this.target 来访问 target 属性。
继续学习