JavaScript语法(The Language)

这章不会对JavaScript作详细的介绍。有其它的书可以参考,请访问Mozilla Developer Network

JavaScript表面上是一种非常通用的语言,与许多其它语言没有什么不同:

  1. function countDown() {
  2. for(var i=0; i<10; i++) {
  3. console.log('index: ' + i)
  4. }
  5. }
  6. function countDown2() {
  7. var i=10;
  8. while( i>0 ) {
  9. i--;
  10. }
  11. }

但是注意JS有函数作用域,没有C++中的块作用域(查看Functions and function scope)。

语句if … else,break,continue也可以使用。switch相对于C++中只可以切换整数值,JavaScript可以切换其它类型的值:

  1. function getAge(name) {
  2. // switch over a string
  3. switch(name) {
  4. case "father":
  5. return 58;
  6. case "mother":
  7. return 56;
  8. }
  9. return unknown;
  10. }

JS可以将几种值认为是false,如false,0,“”,undefined,null。例如一个函数范围默认值undefined。使用‘===’操作符验证是否为false。‘==’等于操作将会对类型转换做验证。如果条件允许,直接使用等于操作符‘===’可以更快更好的验证一致性(查看Comparison operators)。

在JavaScript底层有它自己的实现方式,例如数组:

  1. function doIt() {
  2. var a = [] // empty arrays
  3. a.push(10) // addend number on arrays
  4. a.push("Monkey") // append string on arrays
  5. console.log(a.length) // prints 2
  6. a[0] // returns 10
  7. a[1] // returns Monkey
  8. a[2] // returns undefined
  9. a[99] = "String" // a valid assignment
  10. console.log(a.length) // prints 100
  11. a[98] // contains the value undefined
  12. }

当然对比C++或者Java这种OO语言,JS的工作方式是不同的。JS不是一种纯粹的OO语言,它也可以称作基于原型语言。每个对象都有一个原型对象。对象是基于这个原型对象创建的。请阅读这本关于JavaScript的书了解更多Javascript the Good Parts by Douglas Crockford

可以使用在线JS控制台或者小片断的QML代码来测试小的JS片段代码:

  1. import QtQuick 2.0
  2. Item {
  3. function runJS() {
  4. console.log("Your JS code goes here");
  5. }
  6. Component.onCompleted: {
  7. runJS();
  8. }
  9. }