概述
QML语法有三个核心:
- ECMAScript
- Qt对象系统
- Qt Quick标准库
所以ECMAScript非常重要,本章主要总结ECMAScript用法
ECMAScript语法参考链接:ECMAScript 语法
ECMAScript内置对象参考链接:JavaScript 标准内置对象 - JavaScript | MDN
1.语法
区分大小写
比如:变量 test 与变量 TEST 是不同的。
变量是弱类型的
定义变量时只能用 var 运算符,而不是String、int、bool之类的.初始化的时候可以赋为任意值,也可以随意改变变量所存储的数据类型(尽量避免这样做).比如:
var color = "red";
var num = 25;
var visible = true;
console.log(num)
num = "123" // 将int类型转为bool类型,不建议这样更改, 好的编码习惯是始终存放相同类型的值
console.log(num)
每行结尾的分号可有可无
最好还是加上分号,与C++代码保持一致,保持良好编码习惯
注释与 Java、C 和 PHP 语言的注释相同
比如:
// this is a single-line comment
/*
* this is a multi-line comment
*/
括号表示代码块
在左括号({)和右括号(})之间被称为代码块.
声明变量
可以用var 语句来定义多个变量:
var test1 = "hi", test2 = "hello", age = 25;
命名变量
变量名需要遵守两条简单的规则:
第一个字符必须是字母、下划线(_)或美元符号($)余下的字符可以是下划线、美元符号或任何字母或数字字符下面的变量都是合法的:
var test;
var $test;
var $1;
var _$te$t2;
最好的命名方式是:
- 方法和变量都以小驼峰方式命名
- 类都以大驼峰方式命名
- 枚举值之类的以全大写,下划线分割
2.ECMAScript 关键字
在ECMAScript中的关键字和C++关键字都类似.不一样的有:
- new : 创建一个引用对象变量,和C++不一样,由于ECMAScript有垃圾收集器,所以我们释放时只需要置为null,由于没有对象去引用它,就可以让它释放.
- delete : 只能用来删除对象中开发者定义的属性和方法,而不能删除一个对象.
- return : 只能写在函数内部
++和--运算符
和C/C++一样,前置++和前置--,都是发生在计算表达式之前.
而后置++和后置--,都是发生在计算表达式之后.
var iNum1 = 2;
var iNum2 = 20;
var iNum3 = --iNum1 + --iNum2; // 1 + 19 等于 20
var iNum4 = iNum1-- + iNum2--; // 1 + 19 等于 20
var iNum5 = iNum1 + iNum2; // 0 + 18 等于 18
取反~、与&、或|、异或^运算、取模运算符
在ECMAScript中, 取反~、与&、或|、异或^、%的运算规则和C++一样.示例如下:
var iNum1 = ~10; // 10取反然后自减1,等于-11
var iNum2 = 10 & 7; // 1010 & 0111 = 0010 = 2
var iNum3 = 10 | 7; // 1010 | 0111 = 1111 = 15
var iNum4 = 10 ^ 7; // 1010 ^ 0111 = 相同为0,相异则或 = 1101 =13
var iResult = 26%5; //等于 1
for-in 语句
for-in 语句,不仅可以打印出对象里的属性和方法,还可以打印数组的内容
示例如下:
for(var i in data) {
... ...
}
switch语句
在 ECMAScript 中,switch 语句可以用于字符串,而且case语句能用变量值.非常灵巧,示例如下所示:
var BLUE = "blue", RED = "red", GREEN = "green";
switch (sColor) {
case BLUE: console.log("Blue");
break;
case RED: console.log("Red");
break;
case GREEN: console.log("Green");
break;
default: console.log("Other");
}
3.原始值和引用值
在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值(类似于指针)
原始值 - (可以通过typeof运算符来判断)
存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。
引用值 - (可以通过instanceof运算符来判断)
存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处(只要是new出来的对象都是引用值)
而原始值有5 种类型(可以通过typeof来判断变量的类型):
- undefined - 如果变量是 Undefined 类型的(未赋初值的变量)
- boolean - 如果变量是 Boolean 类型的
- number - 如果变量是 Number 类型的(不管是整数还是浮点数)
- string - 如果变量是 String 类型的
- object - 如果变量是一种引用类型或 Null 类型的(用于表示尚未存在的对象)
typeof 运算符
用来判断变量的是什么类型的变量.示例:
var color = "red";
var visible = true;
var num = 25;
var num1 = 025; // 0开头的数字表示是8进制
var num2 = 0x25; // 0x开头的表示是十六进制
var oTemp;
console.log(typeof color) // 打印string
console.log(typeof visible) //打印boolean
console.log(typeof num) //打印number
console.log(typeof oTemp) // 打印undefined,因为没初始值
console.log(oTemp == null) // 打印为true
var arr = new Array;
console.log(typeof arr) // 打印object,如果是引用类型,查看对象类型的话,需要使用instanceof运算符
console.log(arr instanceof Array) // arr引用的类型是Array,所以打印true
尽管null和undefined相等,但是意义不同,比如我们要清理一个对象,那么需要给对象赋值null,而不是undefined
instanceof 运算符
instanceof用来判断该对象是否为class的实例,比如下面,判断arr对象是否Array的实例:
var arr = new Array;
console.log(typeof arr) // 打印object,如果是引用类型,查看对象类型的话,需要使用instanceof运算符
console.log(arr instanceof Array) // arr引用的类型是Array,所以打印true
typeof 运算符和instanceof 运算符
instanceof 运算符与 typeof 运算符相似,用于识别正在处理的对象的类型。与 typeof 方法不同的是:
- instanceof 方法要求开发者明确地确认对象为某特定类型。
- 而typeof则可以直接得出变量类型.
未完待续,下章学习2.qml-ECMAScript_02(原始值类型、通用转换方法)_诺谦的博客-CSDN博客_qml 类型转换
最后
以上就是愉快魔镜为你收集整理的1.qml-ECMAScript学习(语法、关键字、原始值和引用值)1.语法2.ECMAScript 关键字3.原始值和引用值的全部内容,希望文章能够帮你解决1.qml-ECMAScript学习(语法、关键字、原始值和引用值)1.语法2.ECMAScript 关键字3.原始值和引用值所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复