JavaScript语法(The Language)
这章不会对JavaScript作详细的介绍。有其它的书可以参考,请访问Mozilla Developer Network
JavaScript表面上是一种非常通用的语言,与许多其它语言没有什么不同:
function countDown() {
for(var i=0; i<10; i++) {
console.log('index: ' + i)
}
}
function countDown2() {
var i=10;
while( i>0 ) {
i--;
}
}
但是注意JS有函数作用域,没有C++中的块作用域(查看Functions and function scope)。
语句if … else,break,continue也可以使用。switch相对于C++中只可以切换整数值,JavaScript可以切换其它类型的值:
function getAge(name) {
// switch over a string
switch(name) {
case "father":
return 58;
case "mother":
return 56;
}
return unknown;
}
JS可以将几种值认为是false,如false,0,“”,undefined,null。例如一个函数范围默认值undefined。使用‘===’操作符验证是否为false。‘==’等于操作将会对类型转换做验证。如果条件允许,直接使用等于操作符‘===’可以更快更好的验证一致性(查看Comparison operators)。
在JavaScript底层有它自己的实现方式,例如数组:
function doIt() {
var a = [] // empty arrays
a.push(10) // addend number on arrays
a.push("Monkey") // append string on arrays
console.log(a.length) // prints 2
a[0] // returns 10
a[1] // returns Monkey
a[2] // returns undefined
a[99] = "String" // a valid assignment
console.log(a.length) // prints 100
a[98] // contains the value undefined
}
当然对比C++或者Java这种OO语言,JS的工作方式是不同的。JS不是一种纯粹的OO语言,它也可以称作基于原型语言。每个对象都有一个原型对象。对象是基于这个原型对象创建的。请阅读这本关于JavaScript的书了解更多Javascript the Good Parts by Douglas Crockford 。
可以使用在线JS控制台或者小片断的QML代码来测试小的JS片段代码:
import QtQuick 2.0
Item {
function runJS() {
console.log("Your JS code goes here");
}
Component.onCompleted: {
runJS();
}
}