JavaScript是一种脚本语言。
脚本,一条条的文字命令。执行时由系统的一个解释器,将其一条条的翻译成机器可识别的指令,然后执行
JavaScript基本组成
1.基本语法(浏览器基本都支持,有统一标准)
2.Dom(文档对象模型)(基本都支持,但可能会有差别,有统一标准)
3.Bom(浏览器对象,一般功能浏览器支持,但没有统一的标准)控制浏览器可见区域以外的部分(打开新窗口、关闭浏览器窗口、获取分辨率screen、XmlHttpRequest等。ajax)
js注意几点
1大小写敏感
2弱类型语言
3声明变量用var
4字符串用单引号
5每句话后面分号
JavaScript入门1
编写第一个JavaScript程序:显示当前时间。
<script type="text/javascript">
var nowData = new Date();
alert(nowData.toLocaleDateString());//日期
alert(nowData.toLocaleTimeString());//时间
</script>
<script language=“...” >W3C已经不推荐使用。
网页中的JavaScript代码应该放到<script></script>标签中,<script>标签可以放到<head>、<body>等任意位置,并且一个页面可以有不止一对<script></script>标签。
alert()函数是弹出一个消息窗口。new Date()创建一个Date对象,默认时间是当前时间。
放到<head>中的<script>在body加载之前就已经运行了。写在body中的<script>是随着页面的加载而一个个执行的。
JavaScript入门2
导入外部JavaScript文件:
除了可以在页面中声明JavaScript以外,还可以将JavaScript写到单独的js文件中,然后在页面中引入:
<script src=“test.js” type=“text/javascript”></script>。
声明到单独的js文件的好处是多页面也可以共享、减小网络流量。js文件的CDN(*),内容分发网络
可以将导入外部文件的<script>标签写在文档最后,提高用户体验。
注意:在<script></script>标签中不要出现’</script>’元素。
JavaScript的事件
JavaScript中也有“事件”的概念。
单击一个按钮显示当前时间。就触发了一个事件
<input type=“button” onclick=“ js代码" />
一个特殊的地方:单击一个超链接显示当前时间。
<a href=“javascript:js代码”>热点文字</a>
只有超链接的href中的JavaScript中才需要加“javascript:”,因为它不是事件,而是把”javascript:”看成像“http:”、“ftp:”、“thunder://”、“ed2k://”、“mailto:”一样的网络协议,交由js解析引擎处理。只有href中这是这是一个特例。
超链接为“死链”时,使用#与javascript:void(0);的区别。Void0没有用的值,不会去任何地方,就没有意义了
变量声明:
声明变量的时候无法:int i=0;只能通过var i=0;声明变量,和C#中的var不一样,不是C#中那样的类型推断。
var test=“hello”;
var test1=“hello”,age=20;
var i=100; i=“hello”;
var i,n,x;
var i=10,n=100,s=‘aaa’,m;
变量命名规则:以字母、下划线或$开头,中间可以包括字母、数字、下划线或$。(变量命名中多了一个$)
JavaScript中即可以使用双引号声明字符串,也可以使用单引号声明字符串。主要是为了方便和html集成,避免转义符的麻烦。
变量使用前可以不用var声明,这样的变量会变认为是“全局变量”(不推荐)
JavaScript是动态类型,因此var i=0;i=“abc”;是合法的。
JavaScript数据类型
数值、字符串、布尔、undefined、对象、函数。查看变量的类型用typeof(变量)
数值:(值类型)
var n1=3.1415926;//数值类型
n1.toFixed(3);//四舍五入保留3位小数。
字符串:(值类型,字符串不可变特性)
var s1=‘hello’;//字符串类型
布尔:(值类型)
var b1=true;//布尔类型
undefined:(值类型)
var u1;//undefined
对象(object):(引用类型)
var tim=new Date();//对象类型(object)
var names=[‘zs’,’ls’,’ww’];//数组也是对象类型(object)
var obj=null;//object
函数:(引用类型)
function fun(){ } //typeof(fun);//输出结果为function,函数类型。Typeof还有一个作用那就是判断变量是否可用
JavaScript语法
JavaScript中的null与undefined(参考资料)
undefined,表示一个未知状态
声明了但是没有初始化的该变量,变量的值是一个未知状态(undefined)。 (访问不存在的属性或对象window.xxx)
方法没有明确返回值时,返回值是一个undefined.
当对未声明的变量应用typeof运算符时,显示为undefined(*)
null表示尚未存在的对象,null是一个有特殊意义的值。可以为变量赋值为null,此时变量的值为“已知状态”(不是undefined),即null。(用来初始化变量,清除变量内容,释放内存)
undefined==null //结果为true,但含义不同。
undefined===null //false(*),先判断类型是否一致,然后判断值。
===严格等于、!==严格不等于
由于==会将值转换类型后再判断是否相等,有时可能会有意想不到的结果,所以推荐使用===。但注意,有些情况使用==能带来更好的效果。
JavaScript中字符串同样需要转义符 ’ ’,与C#一样。
想在页面输出:c:windowsmicrosoftvs.txt,这句话,需要这样写:alert(‘c:\windows\microsoft\vs.txt’);不能用@,@只在C#中有效。
常见转义符:
、
、’、”、\
在用正则表达式的时候也会遇到转义符问题。(*)
if-else、for、while、do-while、switch、continue、break的用法参考c#语法。for循环稍有差异:for(var i=0;i<10;i++){ … }
注:switch判断时,是“全等于”,===
JavaScript变量的作用域
默认如果直接在script标签中定义变量,则属于“全局作用域范围”(全局执行环境),即属于window对象。
全局作用域范围的变量直到网页关闭或浏览器关闭时才释放资源
一个页面中的多个<script>标签中的变量可以互相访问。
JS有垃圾回收机制,会定时对可释放资源的变量回收。将变量设置为null则表示可以被回收了。
如果在某个函数内定义了变量则作用域范围属于该函数。注意声明变量时使用var与不使用var的区别。
注意:JS中没有块级作用域范围。
类型转换
parseInt(arg)//将指定的字符串,转换成整数
parseFloat(arg)//将指定的字符串,转换成浮点数
Number(arg)把给定的值(任意类型)转换成数字(可以是整数或浮点数);转换的是整个值,而不是部分值。如果该字符串不能完全转换为整型,则返回NaN。(Not a Number)
isNaN(arg)//判断arg是否为一个非数字(NaN),NaN与NaN也不相等。
String(arg)把给定的值(任意类型)转换成字符串;
Boolean(arg)把给定的值(任意类型)转换成 Boolean 型;