有趣的js代码

求一个js日期代码,需要在网页上输出的是图片,就是0-9的数字,替换成设计好的图片在网页上显示

按照以下步骤来:

1、获取当前日期

2、生成日期字符串

3、显示

准备好一张数字的图片:

【代码】

《style type=“text/css“》

/* css */

.num_0, .num_1, .num_2, .num_3, .num_4, .num_5, .num_6, .num_7, .num_8, .num_9 { background:url(numbers.gif) no-repeat 0 0; display:inline-block; width:40px; height:40px; }

.num_1 { background-position:-40px 0; }

.num_2 { background-position:-80px 0; }

.num_3 { background-position:-120px 0; }

.num_4 { background-position:-160px 0; }

.num_5 { background-position:-200px 0; }

.num_6 { background-position:-240px 0; }

.num_7 { background-position:-280px 0; }

.num_8 { background-position:-320px 0; }

.num_9 { background-position:-360px 0; }

《/style》

《div id=“dis“》《/div》

《script》

var date=new Date(),

      str=’’+date.getFullYear()+(date.getMonth()+1)+date.getDate(),

      i=0,

      len=str.length,

      html=;

for(; i《len; i++)

    html.push(’《span class=“num_’+str+’“》 《/span》’);

document.getElementById(’dis’).innerHTML=html.join(’’);

《/script》

【运行】

运行后,js代码会添加一些元素到页面上,会生成如图所示的结构:

看下页面显示效果:

显示是通过样式表完成的。

这样子就实现一个比较简单的日期显示功能。希望可以帮到您。

js 中如何替换字符串

JS字符串替换函数:Replace(“字符串1″, “字符串2″),   1.我们都知道JS中字符串替换函数是Replace(“字符串1″, “字符串2″),但是这个函数只能将第一次出现的字符串1替换掉,那么我们如何才能一次性全部替换掉了?   《script》   var s = “LOVE LIFE ! LOVE JAVA …“;  alert(s);   alert(s.replace(“LOVE “, “爱“));  alert(s.replace(/\LOVE/g, “爱“));   《/script》

function formatStr(str)  {  str=str.replace(/\r\n/ig,“《br/》“);  return str;  }  要注意两点:  要使用正则表达式,不能使用 str.replace(“\r\n“, newString); ,这会导致只替换第一个匹配的子字符串。  母字符串中不一定 \r\n 会同时存在,也许只有 \n,没有 \r 也是可能的。   replace方法的语法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串。。为了帮助大家更好的理解,下面举个简单例子说明一下    Js代码  《script language=“javascript“》   var stringObj=“终古人民共和国,终古人民“;      //替换错别字“终古”为“中国”   //并返回替换后的新字符   //原字符串stringObj的值没有改变   var newstr=stringObj.replace(“终古“,“中国“);   alert(newstr);   《/script》      比我聪明的你,看完上面的例子之后,会发现第二个错别字“终古”并没有被替换成“中国”,我们可以执行二次replace方法把第二个错别字“终古”也替换掉,程序经过改进之后如下:    Js代码  《script language=“javascript“》   var stringObj=“终古人民共和国,终古人民“;      //替换错别字“终古”为“中国”   //并返回替换后的新字符   //原字符串stringObj的值没有改变   var newstr=stringObj.replace(“终古“,“中国“);      newstr=newstr.replace(“终古“,“中国“);   alert(newstr);   《/script》      我们可以仔细的想一下,如果有N的N次方个错别字,是不是也要执行N的N次方replace方法来替换掉错别字呢??呵,不用怕,有了正则表达式之后不用一个错别字要执行一次replace方法。。程序经过改进之后的代码如下    Js代码  《script language=“javascript“》   var reg=new RegExp(“终古“,“g“); //创建正则RegExp对象   var stringObj=“终古人民共和国,终古人民“;   var newstr=stringObj.replace(reg,“中国“);   alert(newstr);   《/script》  上面讲的是replace方法最简单的应用,不知道大家有没有看懂??下面开始讲稍微复杂一点的应用。。    大家在一些网站上搜索文章的时候,会发现这么一个现象,就是搜索的关键字会高亮改变颜色显示出来??这是怎么实现的呢??其实我们可以用正则表达式来实现,具体怎么样实现呢?简单的原理请看下面的代码    Js代码  《script language=“javascript“》   var str=“中华人民共和国,中华人民共和国“;   var newstr=str.replace(/(人)/g,“《font color=red》$1《/font》“);   document.write(newstr);   《/script》  上面的程序缺少互动性,我们再改进一下程序,实现可以自主输入要查找的字符    Js代码  《script language=“javascript“》   var s=prompt(“请输入在查找的字符“,“人“);   var reg=new RegExp(“(“+s+“)“,“g“);   var str=“中华人民共和国,中华人民共和国“;   var newstr=str.replace(reg,“《font color=red》$1《/font》“);   document.write(newstr);   《/script》    可能大家都会对$1这个特殊字符表示什么意思不是很理解,其实$1表示的就是左边表达式中括号内的字符,即第一个子匹配,同理可得$2表示第二个子匹配。。什么是子匹配呢??通俗点讲,就是左边每一个括号是第一个字匹配,第二个括号是第二个子匹配。。    当我们要把查找到的字符进行运算的时候,怎么样实现呢??在实现之前,我们先讲一下怎么样获取某一个函数的参数。。在函数Function的内部,有一个arguments集合,这个集合存储了当前函数的所有参数,通过arguments可以获取到函数的所有参数,为了大家理解,请看下面的代码    Js代码  《script language=“javascript“》   function test(){     alert(“参数个数:“+arguments.length);     alert(“每一个参数的值:“+arguments);     //可以用for循环读取所有的参数   }      test(“aa“,“bb“,“cc“);   《/script》  看懂上面的程序之后,我们再来看下面一个有趣的程序    Js代码  《script language=“javascript“》   var reg=new RegExp(“\\d“,“g“);   var str=“abd1afa4sdf“;   str.replace(reg,function(){alert(arguments.length);});   《/script》      我们惊奇的发现,匿名函数竟然被执行了二次,并且在函数里还带有三个参数,为什么会执行二次呢??这个很容易想到,因为我们写的正则表达式是匹配单个数字的,而被检测的字符串刚好也有二个数字,故匿名函数被执行了二次。。在匿名函数内部的那三个参数到底是什么内容呢??为了弄清这个问题,我们看下面的代码。    Js代码  《script language=“javascript“》   function test(){   for(var i=0;i《arguments.length;i++){       alert(“第“+(i+1)+“个参数的值:“+arguments);   }   }   var reg=new RegExp(“\\d“,“g“);   var str=“abd1afa4sdf“;   str.replace(reg,test);   《/script》      经过观察我们发现,第一个参数表示匹配到的字符,第二个参数表示匹配时的字符最小索引位置(RegExp.index),第三个参数表示被匹配的字符串(RegExp.input)。其实这些参数的个数,还会随着子匹配的变多而变多的。弄清这些问题之后,我们可以用另外的一种写法    Js代码  《script language=“javascript“》   function test($1){     return “《font color=’red’》“+$1+“《/font》“   }   var s=prompt(“请输入在查找的字符“,“人“);   var reg=new RegExp(“(“+s+“)“,“g“);   var str=“中华人民共和国,中华人民共和国“;   var newstr=str.replace(reg,test);   document.write(newstr);   《/script》  看了上面的程序,原来可以对匹配到的字符为所欲为。下面简单举一个应用的例子    Js代码  《script language=“javascript“》   var str=“他今年22岁,她今年20岁,他的爸爸今年45岁,她的爸爸今年44岁,一共有4人“   function test($1){     var gyear=(new Date()).getYear()-parseInt($1)+1;     return $1+“(“+gyear+“年出生)“;   }   var reg=new RegExp(“(\\d+)岁“,“g“);   var newstr=str.replace(reg,test);   alert(str);   alert(newstr);   《/script》

一段我从未见过的JS代码写法!

(’1(“0“);’, 2, 2, ’OK|alert’.split(’|’), 0, {})
这个不是最后一句 这个代码 其实是这样看
function(p,a,c,k,e,d) {这里是函数内容}(’1(“0“);’, 2, 2, ’OK|alert’.split(’|’), 0, {})
也就是说 (’1(“0“);’, 2, 2, ’OK|alert’.split(’|’), 0, {})
这个是 函数 function(p,a,c,k,e,d) 的 五个参数
也就是
p=’1(“0“);’
a=2
c=2
k=’OK|alert’.split(’|’)
e=0
最后一个{} 是一个空对象
如果不好理解的话。。这样看
《script type=“text/javascript“》
var a=function(b,c,d){
alert(b+c+d);
}
a(“我“,“爱“,“你“);//弹出“我爱你“
《/script》
接着我们换成上面的写法,不用 变量 a;直接 把
a=function(b,c,d){
alert(b+c+d);
}
代入到 a(“我“,“爱“,“你“);

则有
《script type=“text/javascript“》
(function(b,c,d){
alert(b+c+d);
})(“我“,“爱“,“你“);//弹出“我爱你“
《/script》
接着变 为 你代码里的那个形式 ,eval用来计算执行;

《script type=“text/javascript“》
eval(function(b,c,d){
alert(b+c+d);
}(“我“,“爱“,“你“));//弹出“我爱你“
《/script》

至于卡巴报毒
是因为很多病毒木马的JS文件采用了这种压缩方法。
所以卡巴根据特征码误报也很正常 ~~

有一段非常NB的JS代码

首先不说你理解不理解的问题,这段代码本身就写得很烂……
这种css和结构代码混在一起的形式,让人很不舒服,不过为了简便,我也懒得改了。
我改了一下,帮助你理解
《div id=“demo“ style=“overflow: hidden; WIDTH: 70px; height: 50px;border:solid 1px #222222“ align=“center“》
《table》《tr》
《td id=“demo1“ style=“border:solid 1px red“ 》
aaaaaabbbcccccc
《/td》
《td id=“demo2“ style=“border:solid 1px green“》 《!– 新加2个style帮助你理解,删除后你就明白了 –》
aaaaaabbb《!– 其实这里根本没必要完全一样,因为这里的后半截是否显示取决于demo的宽度,也就是显示区域 –》
《/td》
《/tr》《/table》
《/div》
《SCRIPT language=“javascript“》
function Marquee(){
if(demo1.offsetWidth-demo.scrollLeft《=0) //这里把demo2改成demo1,当demo1完全滚出显示区域时,(转下面)
demo.scrollLeft=0 //让内部滚动条(这里是demo1,demo2)回归原位,造成连续滚动假象
else{
demo.scrollLeft++ //让demo的内部滚动条继续向左滚动1px
}
}
var MyMar=setInterval(Marquee,5)
demo.onmouseover=function() {clearInterval(MyMar)} //当鼠标放在div元素上面时,清除下面的定时执行功能
demo.onmouseout=function() {MyMar=setInterval(Marquee,5)} //每5毫秒执行一次函数,也就是每5秒滚动1px
《/SCRIPT》

求一段JS的函数代码.

1:js 字符串长度限制、判断字符长度 、js限制输入、限制不能输入、textarea 长度限制
2.:js判断汉字、判断是否汉字 、只能输入汉字
3:js判断是否输入英文、只能输入英文
4:js只能输入数字,判断数字、验证数字、检测数字、判断是否为数字、只能输入数字
5:只能输入英文字符和数字
6: js email验证 、js 判断email 、信箱/邮箱格式验证
7:js字符过滤,屏蔽关键字
8:js密码验证、判断密码
2.1: js 不为空、为空或不是对象 、判断为空 、判断不为空
2.2:比较两个表单项的值是否相同
2.3:表单只能为数字和”_”,
2.4:表单项输入数值/长度限定
2.5:中文/英文/数字/邮件地址合法性判断
2.6:限定表单项不能输入的字符
2.7表单的自符控制
2.8:form文本域的通用校验函数
1. 长度限制
《script》
function test()
{
if(document.a.b.value.length》50)
{
alert(”不能超过50个字符!”);
document.a.b.focus();
return false;
}
}
《/script》
《form name=a onsubmit=”return test()”》
《textarea name=”b” cols=”40″ wrap=”VIRTUAL” rows=”6″》《/textarea》
《input type=”submit” name=”Submit” value=”check”》
《/form》
2. 只能是汉字
《input onkeyup=”value=”/oblog/value.replace(//g,”)”》
3.” 只能是英文
《script language=javascript》
function onlyEng()
{
if(!(event.keyCode》=65&&event.keyCode《=90))
event.returnvalue=false;
}
《/script》
《input onkeydown=”onlyEng();”》
4. 只能是数字
《script language=javascript》
function onlyNum()
{
if(!((event.keyCode》=48&&event.keyCode《=57)||(event.keyCode》=96&&event.keyCode《=105)))
//考虑小键盘上的数字键
event.returnvalue=false;
}
《/script》
《input onkeydown=”onlyNum();”》
5. 只能是英文字符和数字
《input onkeyup=”value=”/oblog/value.replace(//g,”))”》
6. 验证邮箱格式
《SCRIPT LANGUAGE=javascript RUNAT=Server》
function isEmail(strEmail) {
if (strEmail.search(/^\w+((-\w+)|(\.\w+))*\@+$/) != -1)
return true;
else
alert(”oh”);
}
《/SCRIPT》
《input type=text onblur=isEmail(this.value)》
7. 屏蔽关键字(这里屏蔽***和****)
《script language=”javascript1.2″》
function test() {
if((a.b.value.indexOf (”***”) == 0)||(a.b.value.indexOf (”****”) == 0)){
alert(”:)”);
a.b.focus();
return false;}
}
《/script》
《form name=a onsubmit=”return test()”》
《input type=text name=b》
《input type=”submit” name=”Submit” value=”check”》
《/form》
8. 两次输入密码是否相同
《FORM METHOD=POST ACTION=”“》
《input type=”password” id=”input1″》
《input type=”password” id=”input2″》
《input type=”button” value=”test” onclick=”check()”》
《/FORM》
《script》
function check()
{
with(document.all){
if(input1.value!=input2.value)
{
alert(”false”)
input1.value = “”;
input2.value = “”;
}
else document.forms.submit();
}
}
《/script》
够了吧 🙂
屏蔽右键 很酷
oncontextmenu=”return false” ondragstart=”return false” onselectstart=”return false”
加在body中

2.1 表单项不能为空
《script language=”javascript”》
《!–
function CheckForm()
{
if (document.form.name.value.length == 0) {
alert(”请输入您姓名!”);
document.form.name.focus();
return false;
}
return true;
}
–》
《/script》
2.2 比较两个表单项的值是否相同
《script language=”javascript”》
《!–
function CheckForm()
if (document.form.PWD.value != document.form.PWD_Again.value) {
alert(”您两次输入的密码不一样!请重新输入.”);
document.ADDUser.PWD.focus();
return false;
}
return true;
}
–》
《/script》
2.3 表单项只能为数字和”_”,用于电话/银行帐号验证上,可扩展到域名注册等
《script language=”javascript”》
《!–
function isNumber(String)
{
var Letters = ”1234567890-”; //可以自己增加可输入值
var i;
var c;
if(String.charAt( 0 )==’-’)
return false;
if( String.charAt( String.length – 1 ) == ’-’ )
return false;
for( i = 0; i 《 String.length; i ++ )
{
c = String.charAt( i );
if (Letters.indexOf( c ) 《 0)
return false;
}
return true;
}
function CheckForm()
{
if(! isNumber(document.form.TEL.value)) {
alert(”您的电话号码不合法!”);
document.form.TEL.focus();
return false;
}
return true;
}
–》
《/script》
2.4 表单项输入数值/长度限定
《script language=”javascript”》
《!–
function CheckForm()
{
if (document.form.count.value 》 100 || document.form.count.value 《 1)
{
alert(”输入数值不能小于零大于100!”);
document.form.count.focus();
return false;
}
if (document.form.MESSAGE.value.length《10)
{
alert(”输入文字小于10!”);
document.form.MESSAGE.focus();
return false;
}
return true;
}
//–》
《/script》
2.5 中文/英文/数字/邮件地址合法性判断
《SCRIPT LANGUAGE=”javascript”》
《!–
function isEnglish(name) //英文值检测
{
if(name.length == 0)
return false;
for(i = 0; i 《 name.length; i++) {
if(name.charCodeAt(i) 》 128)
return false;
}
return true;
}
function isChinese(name) //中文值检测
{
if(name.length == 0)
return false;
for(i = 0; i 《 name.length; i++) {
if(name.charCodeAt(i) 》 128)
return true;
}
return false;
}
function isMail(name) // E-mail值检测
{
if(! isEnglish(name))
return false;
i = name.indexOf(” at ”);
j = name dot lastIndexOf(” at ”);
if(i == -1)
return false;
if(i != j)
return false;
if(i == name dot length)
return false;
return true;
}
function isNumber(name) //数值检测
{
if(name.length == 0)
return false;
for(i = 0; i 《 name.length; i++) {
if(name.charAt(i) 《 ”0″ || name.charAt(i) 》 ”9″)
return false;
}
return true;
}
function CheckForm()
{
if(! isMail(form.Email.value)) {
alert(”您的电子邮件不合法!”);
form.Email.focus();
return false;
}
if(! isEnglish(form.name.value)) {
alert(”英文名不合法!”);
form.name.focus();
return false;
}
if(! isChinese(form.cnname.value)) {
alert(”中文名不合法!”);
form.cnname.focus();
return false;
}
if(! isNumber(form.PublicZipCode.value)) {
alert(”邮政编码不合法!”);
form.PublicZipCode.focus();
return false;
}
return true;
}
//–》
《/SCRIPT》
2.6 限定表单项不能输入的字符
《script language=”javascript”》
《!–
function contain(str,charset)// 字符串包含测试函数
{
var i;
for(i=0;i《charset.length;i++)
if(str.indexOf(charset.charAt(i))》=0)
return true;
return false;
}
function CheckForm()
{
if ((contain(document.form.NAME.value, ”%\(\)》《”)) || (contain(document.form.MESSAGE.value, ”%\(\)》《”)))
{
alert(”输入了非法字符”);
document.form.NAME.focus();
return false;
}
return true;
}
//–》
《/script》
1. 检查一段字符串是否全由数字组成
—————————————
《script language=”Javascript”》《!–
function checkNum(str){return str.match(/\D/)==null}
alert(checkNum(”1232142141″))
alert(checkNum(”123214214a1″))
// –》《/script》
2. 怎么判断是否是字符
—————————————
if (//g.test(s)) alert(”含有汉字”);
else alert(”全是字符”);
3. 怎么判断是否含有汉字
—————————————
if (escape(str).indexOf(”%u”)!=-1) alert(”含有汉字”);
else alert(”全是字符”);

4. 邮箱格式验证
—————————————
//函数名:chkemail
//功能介绍:检查是否为Email Address
//参数说明:要检查的字符串
//返回值:0:不是 1:是
function chkemail(a)
{ var i=a.length;
var temp = a.indexOf(’@’);
var tempd = a.indexOf(’.’);
if (temp 》 1) {
if ((i-temp) 》 3){
if ((i-tempd)》0){
return 1;
}

}
}
return 0;
}
5. 数字格式验证
—————————————
//函数名:fucCheckNUM
//功能介绍:检查是否为数字
//参数说明:要检查的数字
//返回值:1为是数字,0为不是数字
function fucCheckNUM(NUM)
{
var i,j,strTemp;
strTemp=”0123456789″;
if ( NUM.length== 0)
return 0
for (i=0;i《NUM.length;i++)
{
j=strTemp.indexOf(NUM.charAt(i));
if (j==-1)
{
//说明有字符不是数字
return 0;
}
}
//说明是数字
return 1;
}

6. 电话号码格式验证
—————————————
//函数名:fucCheckTEL
//功能介绍:检查是否为电话号码
//参数说明:要检查的字符串
//返回值:1为是合法,0为不合法
function fucCheckTEL(TEL)
{
var i,j,strTemp;
strTemp=”0123456789-()# “;
for (i=0;i《TEL.length;i++)
{
j=strTemp.indexOf(TEL.charAt(i));
if (j==-1)
{
//说明有字符不合法
return 0;
}
}
//说明合法
return 1;
}
7. 判断输入是否为中文的函数
—————————————
function ischinese(s){
var ret=true;
for(var i=0;i《s.length;i++)
ret=ret && (s.charCodeAt(i)》=10000);
return ret;
}

8. 综合的判断用户输入的合法性的函数
—————————————
《script language=”javascript”》
//限制输入字符的位数开始
//m是用户输入,n是要限制的位数
function issmall(m,n)
{
if ((m《n) && (m》0))
{
return(false);
}
else
{return(true);}
}
9. 判断密码是否输入一致
—————————————
function issame(str1,str2)
{
if (str1==str2)
{return(true);}
else
{return(false);}
}
10. 判断用户名是否为数字字母下滑线
—————————————
function notchinese(str){
var reg=//g
if (reg.test(str)){
return (false);
}else{
return(true); }
}
2.8. form文本域的通用校验函数
—————————————
作用:检测所有必须非空的input文本,比如姓名,账号,邮件地址等等。
该校验现在只针对文本域,如果要针对form里面的其他域对象,可以改变判断条件。
使用方法:在要检测的文本域中加入title文字。文字是在提示信息,你要提示给用户的该字段的中文名。比如要检测用户名
html如下《input name=”txt_1″ title=”姓名”》,当然,最好用可视化工具比如dreamweaver什么的来域。
如果要检测数字类型数据的话,再把域的id统一为sz.
javascript判断日期类型比较麻烦,所以就没有做日期类型校验的程序了.高手可以补充。
程序比较草,只是提供一个思路。抛砖引玉! :)
哦,对了,函数调用方法:
《 form onsubmit=”return dovalidate()”》
function dovalidate()
{
fm=document.forms //只检测一个form,如果是多个可以改变判断条件
for(i=0;i《fm.length;i++)
{
//检测判断条件,根据类型不同可以修改
if(fm.title!=”“))

if(fm.value=”/blog/=”“)//
{
str_warn1=fm.title+”不能为空!”;
alert(str_warn1);
fm.focus();
return false;
}
if(fm.id.toUpperCase()==”SZ”)//数字校验
{
if(isNaN(fm.value))
{ str_warn2=fm.title+”格式不对”;
alert(str_warn2);
fm.focus();
return false;
}
}
}
return true;
}

下面是一段Js语言代码我是初学者,大神,花括号里的各个代码如何理解

这个方法有三个参数,cname,cvalue都是存储名称和值的,exdays是设置超期天数的
function setCookie(cname,cvalue,exdays)
{
var d = new Date(); //定义一个时间对象
d.setTime(d.getTime()+(exdays*24*60*60*1000)); //获取当前时间+超期天数(js时间单位是毫秒),最终得到是超期时间
var expires = “expires=“+d.toGMTString(); //将超期时间转换成GMT格式,
document.cookie = cname + “=“ + cvalue + “; “ + expires; //往cookie里存储两组值
}

求一个代码,js控制文字颜色在红色和黄色之间不断闪烁

好吧~给你个代码示例:

《div id=“ceshi“》这里是闪烁的字体!《/div》
《script》  
(function(){
    var text=document.getElementById(“ceshi“);
    function color(){
        if(text.style.color==“red“){
            text.style.color=“yellow“;
        }
        else{
            text.style.color=“red“;
        }
        setTimeout(function(){
           color(); 
       },200);
    }
    color();
})();
《/script》

不懂的话再问我吧~

js编写的小游戏有哪些

有是有,但并不是很多,而且都是贪吃蛇之类的,非常小的游戏,即便是页游也一样。
能运行在浏览器端的语言,确实只有JS,但在开发阶段,却并不一定要使用JS写。而是用其他语言写,直接使用JS写游戏,实在太自虐了。
JS本身的缺点非常严重,如果只是写DOM的话,其实并没什么感觉,因为代码量太少。
但如果写类似游戏这种复杂逻辑,代码量一变大,瞬间就令人崩溃了。弱类型,回调地狱问题,即便将来版本更新到ES10,也不可能完全解决。
如果你看过一个游戏项目的JS源码,你会发现一个非常恐怖的现象。在代码的最底部,有几百个,甚至几千个大括号。。。。所有大型程序的JS源码,拉到最底部,大概都是长这个样子的:
} } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } }.Listen(127.0.0.1) } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } }
大括号的数量还必须绝对精准,少一个,或者多一个,都无法正常运行。。。这就是平时所说的回调地狱。由于JS项目总是函数里面套函数,层层相套,这叫做回调函数。层数一多,就算你是N年的老手,也照样懵比。。。。
所有的游戏项目,都比网页特效的代码量要多的多。。。比如写一个斗地主,就需要4,5万行的JS代码。。。。。最底部的大括号数量,轻松上千。。。。
弱类型的缺陷更严重,但由于解释起来篇幅会很长,所以这里就不提了。
所以为了避开JS本身太多的语法缺陷,一般游戏项目,都是使用其他语言编写,最后再通过一些手段,编译成JS。。。就如同你用一般编程语言编写,最终运行的时候,只有1和0的道理一样。。。在制作页游的时候,一般都是用强类型语言编写,最后开发完成之后,把那些强类型语言编写的代码,通过一些手段“转换”成JS代码。
“转换”成JS代码的方法有很多,其中在游戏行业比较主流的,一共有三种:
1,ActionScript语言,简称AS语言。也就是当年FLASH使用的那个语言。。。当年也曾辉煌过,后来随着FLASH的没落而逐渐没落。。。但有很多H5游戏引擎,也同样使用AS语言。比如LayaAir引擎等。
2,TypeScript语言,简称TS语言。由微软出品,微软和谷歌共同维护的一门完全符合ECMA标准的语言,可以视作JS的超集。超集这个概念怎么理解呢?就是“所有的JS语言,同时也是TS语言,而TS比今天的JS,更像未来的JS”。就比如目前的JS版本只出到了ES6或ES7。那么ES10是啥样?现在并没人见过,连ECMA组织也不知道。。。但有一点可以确定的是,它和TypeScript长的很像。而TS是包含JS的。换言之,JS本身也可以视作是TS的一部分。只是TS里的内容要远比JS多的多。这语言主要有两种用法,一是像AS语言一样结合游戏引擎,比如cocos creator,白鹭等引擎都支持。还有一种用法就是。。。结合Three.JS之类的库,完全按照JS本身的用法去使用。
3,C#语言。虽然JS得名字里面带个Java。但和它长的最像的语言,却并不是JAVA,而是C#。简单说就是:“JS的名字和JAVA有多像,语法就和C#有多像”。所以C#也比较容易转换成JS。但这并不是重点,重点是有一个超级牛的游戏引擎,是使用C#作为开发语言的。就是大名鼎鼎的Unity3D。Unity3D可以直接把C#编写的游戏项目,虚拟现实项目等,编译发布到WebGL。