JavaScript简易教程
一、变量
可以使用 var、let、const(常量)来定义,格式:
var 变量名 = [初始值];
// 或
var 变量名;
let 变量名 = [初始值];
// 或
let 变量名;
const 变量名 = [初始值];
// const 必须在声明同时指定它的值。
// 因为它在后期不可变
// 声明一个空的只读常量是无意义的。后期也可以取值或赋值:
变量名 = 新值;脚本环境中已经有两个特定对象,可以存储变量:
game.gd['名称'] = 变量;
game.d['名称'] = 变量;区别:game.gd 是全局变量,在所有的脚本里都可以使用(生命周期为整个游戏,存档主要就是存它,可以存放金钱、事件等等);game.d 是地图变量,在地图中有效,切换地图后会清空,可做临时变量。
二、数据类型
主要有 数字(Number)、字符串(String)、布尔(Bool)、数组(Array)、对象(object)、null、undefined,其他的基本用不到,可以参考ES6。
数字
整数、浮点数、负数,支持16进制、8进制和2进制。一般可以用来运算。
字符串
用单引号或双引号扩起的一串任意字符组成的,叫字符串。一般用来显示一些文字(对话等)。
- 比如: - '你好'
- "!@#¥%……&*()||、、、"
 
- 注意的是单引号或双引号必须成对出现,而且不能混用: - 'hello"
 
- 引号里可以出现引号,必须用 \ 来转义,比如: - "我说 \"你好\" "
 
- 不同引号可以不转义: - "我说 '你好' "
 
布尔
只有 true 和 false两个值,可以用来标记事件,例如:
game.gd["事件1"] = true;
if(game.gd["事件1"]) {
  //事件1触发代码
}数组
一个有序地集合,比如选择框里需要用到。
- 定义格式:
//使用字符串时务必加上双引号(单引号)
let 数组名 = [元素1,元素2,元素3];- 比如:
let choices = ['男', '女', '未知性别']- 元素可以是任意类型的值,甚至也可以是数组和对象。
- 使用: - 数组名[下标]
 
- 下标是从0开始的,写几就返回第几个的值。也可以修改数组: - 数组名[下标] = 新值
 
- 返回数组里元素个数: - 数组名.length
 
- 例如:
var array = ["薯条","芝士"]
//访问芝士
console.info(array[1])对象
一个具有key和value键值对的集合,一般可以保存一个具体角色、物品的属性。
- 定义格式:
对象名 = {key1: value1, key2, value2}- 比如:
let 角色1 = {'攻击': 100, name: '小鬼', '防御': 10}- 使用: - 对象名[key名]或- 对象名.key名。
- 建议使用前者,后者的key名只能是标准变量格式(英文、下划线或$开头,其余的英文、下划线、$和数字组成的名称)才可以使用。
 
- 比如:
角色1['攻击'] //会返回100
角色1.name = '大鬼' //重新设置null
只有一个值,一般用的少。
undefined
没有赋值变量 和 没有定义的数组下标值、对象key 都是 undefined 。
- 比如:
  let varName; // varName 此时是 undefined。
  let obj = {}; //一个空对象,此时使用obj内所有的key值都是undefined。
  let arr = []; //一个空数组,此时使用arr内所有的下标值都是undefined。三、语句流程
和大多数编程语言一样,脚本有3种语句流程:顺序、条件、循环。
脚本默认是从上到下按顺序执行的。
条件:
  if(条件) //单条语句;
  if(条件)
  {
    //多条语句
  }也支持switch语句,具体可以看ES6教程。
循环:
  for(var i = 1; i<10; i++) {
    //语句
  }
  while(条件) { //如果条件成真,则一直执行 语句
    //语句
  }
  do {
    //语句
  }while(条件); //至少执行一遍四、函数
函数(方法)可看作是一系列脚本命令组成的可复用的代码块。
定义有3种:
function 函数名(参数1,参数2){
  //可以没有参数
}也可以:
函数名 = (参数)=>{
  //脚本命令、语句
}运行函数:
函数名(传入的参数);还有一种特殊的函数(其实叫生成器):
function *函数名(参数){
  //注意和普通函数名只是多了个 * 号
  //脚本命令、语句
}生成器简单的来讲,就是可以用yield关键字返回一个值,下次进入仍然可以从返回的地方继续执行(很适合做异步脚本),而普通函数是一口气执行完,下次调用又是从头开始执行。
游戏中有些命令是必须用yield来标记脚本语句的,就是这个原因,比如 game.talk,如果不用yield,则一口气会将所有的话显示出来(结果就是只显示最后一个game.talk),不会等一条一条显示的。
五、其他
a、大小写
脚本的关键字、变量名都是区分大小写的,不注意大小写可能会出错,比如:
iF //应该是if
var choice;  //后面使用不能用 Choice、cHoice等等b、注释
注释就是给你的脚本做说明,本身不会执行。有两种:
//  这个是行注释,它后面的所有都是注释
/* 这个是块注释,可以在一行内,也可以在多行内
现在是多行。。。
。。。
*/c、自动转换
Javascript最容易错的地方之一,就是自动转换,这里举例子说明:
1 + 1 //2,数字运行
'1' + 1 //11
1 - 1 //0
'1' - 1 //0因为+号既是运算符,也是字符串拼接符,所以规定:+号两面如果有一个是字符串,则就会进行字符串拼接(另一个也会转换为字符串),如果需要作为运算,则必须将字符串转换为数字:用parseInt或parseFloat括住即可:
parseInt('1') + 1 //2因为-、*、/、% 号只是运算符,出现字符串时引擎会尝试将字符串自动转换为数字来运算。
d、关于if和for的条件的真假
JS规定:
- 当值为 true、非0、!NaN、[]、{} 为 真
- 当值为 false、0、undefined、null、""、0 或 NaN 为 假。
- 用 !可以取反:!真 为 假,!假 为 真。
现在您可以去鹰歌试试JavaScript!
更新日志
- e3fb8-于
- 79a1d-于
- c9933-于
- 1fbc1-于
- 071ce-于
- cdb90-于
- e4089-于
- 51306-于
- 8a69d-于
- 13c58-于
