Skip to content

Instantly share code, notes, and snippets.

@comzyh
Last active December 24, 2015 00:19
Show Gist options
  • Save comzyh/53a058dc01f2c162d32e to your computer and use it in GitHub Desktop.
Save comzyh/53a058dc01f2c162d32e to your computer and use it in GitHub Desktop.
C++ 到 JS

C++ 到 JS

[TOC] ##Hello World! ###准备一个浏览器 JavaScript 是一个脚本语言,只需要一个一个良好的浏览器即可运行,比如Google Chrome
本文所有样例均基于Chrome
###如何写一个JavaScript 的 HelloWorld 打开任意编辑器,输入以下内容

<script>
alert("HelloWorld!");
</script>

保存为任意HelloWorld.html 打开,应该能看到弹出窗口HelloWorld!
当然,alert函数弹出窗口并不便于调试,推荐使用console.log函数 这样的HelloWorld代码为

<script>
console.log("HelloWorld!");
</script>

保存,打开,右键单击"审查元素"或按F12调出开发者工具,单击Console选项卡,应该能够看到输出的"HelloWorld!" ####引用外部js文件 大量的JavaScript代码可以放在外部的.js文件中 我们的HelloWo可以这样写

<script src="hellloworld.js"></script>

同目录下的helloworld.js的内容为

console.log("HelloWorld!");

今后我们默认 ##Java Script基本概念 ###变量 JavaScript是一门弱类型的语言,看起来类型不同的变量也能够进行运算 下面是一个a+b的样例

var a,b;
a=3;
b=7;
c=a+b;
console.log(c);

运行,应该能看到输出10

注意: 我们并没有用var定义变量c,但是c已经被隐式定义了,这样定义的变量是全局变量,可能声明会出现副作用,建议所有的变量都使用var声明

###函数 一个递归求阶乘的函数

function fact(x)
{
    if (x==0)
        return 1;
    result=x*fact(x-1);
    return result;
}
console.log(fact(5));
console.log(result);

结果应该是两个输出,都为120 我们应当注意到,console.log(result);输出的result就是fact函数最后一次使用时给result赋值,因为result为隐式全局变量,所以能在里这访问 ###数组和循环 同C++一样 Javascript 提供了for循环和数组

var n=5;
var arr=[5,4,3,2,1];//定义数组并初始化,这里使用了JSON方式
for (var i=0;i<n;i++)//for 循环
{
    console.log(i);
    arr[i]+=i;
}
while (--n>=0)
    console.log(arr[n]);

#####JavaScript 中的数组 JvaScript是一门很灵活的语言,有很多强大的特性,比如

  • 声明数组时不用指定数组大小,可以直接使用任意的下标访问数组,当然,相应位置可能没有值
  • 同一个数组中的元素没有必要是同一个类型的,比如arr[1]=3.1415926,arr[2]="孙建波"诸如此类都是可以的
  • 数组下标可以是字符串,类似于C++ STL 中的Map 我们可以这么用arr["Apple"]="Jobs";

###对象和JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,对于JSON的设计理念,可以自行参考阮一峰的数据类型和Json格式
JSON的规则非常简单:

  1. 并列的数据之间用逗号(",")分隔。
  2. 映射用冒号(":")表示。
  3. 并列数据的集合(数组)用方括号("[]")表示。
  4. 映射的集合(对象)用大括号("{}")表示。

JSON 是JavaScript 的一部分,我们可以用JSON来描述一个对象,比如一名ACM选手描述:

var acmer1={
  "ID": "WJMZBMR",
  Name: "陈立杰",
  "School": 
  {
    "HighSchool": "杭州外国语学校",
    "college": "THU"
  },
  "Achievement": 
  [
    "2010年8月,全国青少年信息学竞赛在线赛(NOI2010)全场第二,打败了两名国家队选手。",
    "2010年11月,全国青少年信息学联赛(NOIP2010)浙江赛区一等奖,380分(满分400分)。",
    "2011年1月,全国青少年信息学奥林匹克冬令营(WC2011)全场第23名,在非国家集训队选手中排名前列。"
  ],
  print:function(){console.log(this);}
}
acmer1.Birthday="1995年8月1日";
acmer1.print();

在Console中可以看到输出的对象的结构
可以注意到,上面的Name 并没有加双引号"",Birthday也并不是在声明时定义的,可见JavaScript 里的JSON 是非常灵活的 ####对象的其他用法

var a,b;
console.log(a);//输出undefined
a=new Object();
b={};//另一种初始化对象的方法
console.log("a=",a,"b=",b);
a.name="Android";
a.language="Java";
a.ver=[1,2,3];
console.log(a);
@withwind93
Copy link

Wow~~CLJ is 一门课程??

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment