JavaScript 不仅仅局限于网页游戏开发。虽然 JavaScript 最初是为网页设计而创建的,但它现在已经发展成为一种功能强大的编程语言,应用范围非常广泛。以下是一些JavaScript的应用场景:
1. **Web开发**:JavaScript 是前端开发的主要语言,用于创建交互式网页和动态网页内容,比如表单验证、网页动画、AJAX请求等。
2. **服务器端开发**:Node.js 使用JavaScript在服务器端运行,可以构建全栈Web应用、API服务、实时通信系统等。
3. **移动应用开发**:通过React Native、Ionic等框架,JavaScript 可以用于构建原生移动应用。
4. **桌面应用开发**:Electron 等技术使得 JavaScript 可以开发跨平台的桌面应用。
5. **游戏开发**:虽然你提到的是网页游戏,但通过Three.js、Pixi.js等库,JavaScript 可以开发2D和3D游戏,包括HTML5游戏。
6. **数据可视化**:D3.js 是一个强大的数据可视化库,可以创建动态、交互式的图形和图表。
7. **AI和机器学习**:TensorFlow.js 等库让 JavaScript 可以在浏览器中进行机器学习和深度学习。
所以,JavaScript 并不仅仅限于网页游戏,它在很多领域都有广泛的应用。
游戏开发新手必知:哪种编程语言能为你的游戏梦想添砖加瓦?
HTML5:一种用于描述网页结构和内容的标记语言,可以用来开发跨平台的网页游戏,或者作为游戏引擎的基础技术。它有着简洁明了的标签和属性,可以让你方便地布局和显示游戏元素。很多游戏引擎都基于HTML5技术,例如,Phaser、Pixi.js、Egret Engine等。
JavaScript:一种广泛应用于网页开发的脚本语言,可以用来开发基于HTML5的网页游戏,或者作为游戏引擎的扩展语言。它有着灵活的语法和强大的功能,可以让你创建出丰富多彩的游戏效果。很多游戏引擎都支持JavaScript语言,例如,Phaser、Pixi.js、Three.js等。
三国单机游戏app下载游戏开发语言的另一个选择:JavaScript
javascript 只能做网页游戏
NVM(Node Version Manager),是一款可以让你在同一台计算机上管理多个 Node.js 版本的工具。使用 NVM 可以方便地在多个 Node.js 版本之间进行切换,从而避免了因为应用程序依赖特定版本的 Node.js 而导致的问题。NVM 支持 Windows、macOS、Linux 等多个平台。
NPM(Node Package Manager),是 Node.js 的包管理器。通过 NPM,开发者可以轻松地管理、分享、安装、卸载和更新 Node.js 的模块包。与此同时,NPM 能够让你在本地快速地安装和使用模块,也可以使用命令行工具进行查找和下载所需的模块包。
Promise.all([ 函数1(), 函数2(), ... ... , ]).then(function(result){ ... })
(async function(){ try{ var result=await 异步调用1() await 异步调用2() 其它主程序代码 }catch(err){ 错误处理... } })()
前一个函数() //return new Promise() .then(下一个函数) .catch((err)=>{错误处理函数})
function 前一项任务(){ return new Promise((resolve, reject)=>{ 如果正确,就继续调用resolve() 否则,就调用reject("错误提示") }) }
function liang(next){ console.log("亮起跑...") setTimeout(function(){ console.log("亮到达终点!"); //亮到达终点后,自动调用下一项任务开始执行 next(); },6000); }
class Student{ constructor(sname,sage){ this.sname=sname; this.sage=sage; } intr(){ console.log(`I'm ${this.sname},I'm ${this.sage}`); } }
function Student(sname,sage){ this.sname=sname; this.sage=sage; } Student.prototype.intr=function(){ console.log(`I'm ${this.sname},I'm ${this.sage}`); }
2. 构造函数名提升为类型名,放在class关键词之后,修改构造函数的"function 函数名"为"constructor"
function ajax({ url:url, type:type, data:data, dataType:dataType }){ ... ... }
var lilei={ sname: "Li Lei", sage: 11, signin:function(){ 登录... }, signout:function(){ 注销... } }
var date=[2019,5,6]; 0 1 2 0 1 2 var [y,m,d]=date; y=2019, m=5, d=6
function fun(arr){ //先降一次维 arr=[].concat(...arr); //再检查降维后的数组中是否还包含子数组 var hasArray=arr.some(function(elem){ return Array.isArray(elem); }) if(hasArray){ //如果包含子数组 arr=fun(arr);//就只能再降维一次,直到检查不再包含子数组为止 } return arr }
function 函数名(形参1,形参2,...数组名){ //数组会接住除之前形参1和形参2之外所有剩余的实参值 //保存剩余实参值的结构是一个纯正的数组,可用数组家全部API }
var r=arr.reduce(function(prev,val,i,arr){ return prev+val; }, 初始值)
Array.prototype.map=function(callback){ for(var i=0,result=[];i Array.prototype.forEach=function(callback){ for(var i=0;i arr.every(function(val,i,arr){ //val: 当前元素值 //i : 当前位置 //arr : 当前数组 return 判断条件; }) Object.defineProperties(obj,{ 属性名1: { 特性名:值, ... : ... }, 属性名2: {四大特性} }) { get:function(){return this.隐藏属性;}, set:function(val){ //如果val符合条件 this.隐藏属性=val //否则 报错 }, enumerable, configurable } { value: 属性值, writable: true/false, //控制是否可修改 enumerable: true/false, //控制是否可被for in遍历 configurable: true/false, //1. 控制是否可删除 //2. 控制是否可修改前两个特性 } Object.create=function(father,props){ //var child=new Object(); //Object.setPrototypeOf(child,father); var Fun=function(){}; Fun.prototype=father; var child=new Fun(); //Object.defineProperties(child,props); if(props!==undefined){ for(var key in props){ child[key]=props[key].value; } } return child; } function 类型名(属性参数){ this.属性名=属性参数; /*this.方法名=function(){ ... this.属性名 ... }*///js中强烈不推荐将方法定义在构造函数中 } var obj={ 属性名:属性值, ... : ... , 方法名: function(){ ... this.属性名... } } SyntaxError, ReferenceError, TypeError, RangeError, EvalError, URIError try{ 可能出错的代码 }catch(err){ 只有出错才执行的错误处理代码 比如: 错误提示,记录日志,保存进度/数据 }finally{ 无论是否出错都必须执行的代码 释放资源 } for(var i=2;i<=Math.sqrt(num);i++){ if(num%i==0){不是质数,return} } 是质数 function round(num,d){ num*=Math.pow(10,d); num=Math.round(num); return num/Math.pow(10,d); } 单机欢乐三国杀正版游戏var arr=null; while((arr=reg.exec(str))!=null){ arr[0] //完整关键词 arr[n] //第n个分组的子内容 arr.index //本次找到关键词的位置 reg.lastIndex //下次开始查找的位置 } str=str.replace(/正则表达式/ig,function(kw,$1,$2,...){ //kw: 会自动获得本次找到的完整关键词 //$n: 会自动获得本次找到的关键词中第n个分组的子内容 return 根据不同kw,返回不同替换值 }) for(var r=0;r var keys=[]; var i=0; for(keys[i++] in hash); //结束后: keys中保存了hash的所有key switch(表达式){ case 值1: 操作1; break; case 值2: 操作2; break; case ... : ... ; break; default: 默认操作 } if(条件1){ 操作1 }else if(条件2){ 操作2 }else if(...){ ... }else{ 默认操作 } 11 小于 a< b 小于等于 a<=b 大于 a>b 大于等于 a>= b in math in ym instanceof arr instanceof Array 19 成员访问 arr.length 需计算的成员访问 arr[ i+1 ] new (带参数列表) new Array( 1,2,3 ) 函数调用 fun ( 1,2,3 )
下一篇返回列表