JavaScript学习笔记【一】
其实不算第一次接触JavaScript、之前在其他公司也用过JavaScript、用来做组件开发、到了现在的公司用的ExtJS做OA系统、发现ExtJS的性能是一个很难解决的问题、于是决定系统的学习一下JavaScript、
【一】JavaScript的核心
JavaScript的核心为ECMAScript、另外JavaScript的实现还包括文档对象模型(DOM)和浏览器对象模型(BOM)
【二】JavaScript语法
1.>JavaScript和Java一样都是区分大小写的、例变量名str和Str是不同的、
2.>JavaScript的变量名只能由字母、数字、下划线(_)、美元符号($)组成、且不允许以数字开头、
3.>JavaScript的变量名不允许使用关键字、避免使用保留字、
【三】JavaScript的基本概念-数据类型
1.>JavaScript是一种弱类型语言、所谓若类型语言、即是指变量的类型可以随着赋值类型的不同而变化、例:变量a若赋值为1、则a为number类型、再赋值'a'、
则变为string 类型、
2.>JavaScript的变量类型分为简单类型和引用类型、像数字、Boolean值、String、Null值和Undefined值为简单数据类型、像数组、对象等都属于引用类型、
数据类型Null和Undefined都只有一个值、分别为null和undefined、
3.>JavaScript的变量类型可以通过typeof(全部小写)方法来判定、例var msg = 'Hello EYang !';alert(typeof msg) 的返回结果为'string';
var num = 10; alert(num)的返回结果为'number'、typeof方法的返回值只有如下几种类型'object'、'function'、'string'、'number'、'boolean'、'undefined'、
如果变量名代表一个函数则返回'function'、未初始化的变量返回'undefined'、变量值为null时、返回'object'、
但不是所有的变量类型都可以用typeof来判定、例:var arr = ['a','b'];alert(typeof arr)的结果为'object'、而并不是期望的值'array'、在网上查到了一个方法可以用来
判定变量是否为数组、Object.prototype.toString.call(arr) === '[object Array]'、
4.>条件判定是不要使用浮点数、例var a= 0.15, b = 0.15; alert((a + b ) == 0.3) // true; var a = 0.1, b = 0.2;alert((a + b) == 0.3) // false;
5.>number类型中的正无穷大和负无穷大、Number.POSITIVE_INFINITY和Number.NEGATIVE_INFINITY、无穷大是不能够参与计算的数值、可以用方法
isFinite()来判定给定的数值是否是无穷大、
6.>非数值NaN、任何涉及NaN的操作其返回结果都是NaN、并且NaN不等于任何值、包括NaN自己本身(NaN)、
【四】JavaScript的基本概念-操作符
1.>JavaScript中有很多的操作符、这里只列出常用的几种、数学运算符、加(+)、减(-)、乘(*)、除(/)、自增(++)、自减(--)、
关系运算符大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)、不等于(!)、全等(===)、不全等(!==)需要注意的是、全等和不全等与等于和不等于的区别
只是等于和不等于在数据类型不同时会进行数据类型的转换、而全等和不全等则不会进行数据类型的转换(若两个变量的类型不同、则这两个值必不全等)、
取模运算符(%)
赋值运算符等号(+)、加/赋值(+=)、减/赋值(-=)、乘/赋值(*=)、除/赋值(/=)、取模/赋值(%=)、
三目运算符exp1 ? value 1 : value2; 若语句exp1的结果为true、则返回value1的值、否则返回value2的值、
【五】JavaScript的基本概念-语句
1.> if(condition) statement else statement;建议使用语句块、如下
if(condition) {
statement;
} else {
statement;
}
2.>循环语句do while语句、while语句、for循环、和for-in循环
do {
statement; // 先执行一步操作、在判定exp的值、若为true、则继续执行statement、否则退出循环、
} while(exp);
while(ext) {
statement; //先判定exp是否返回true、若为true、则执行statement、否则退出循环、
}
for(statement;condition;statement) {
statement; //
}
for(var name in obj) {
statement;// name代表对象的属性、或者数组的下标、
}
循环语句块内部可以使用break和coutinue来跳出循环或者执行下一次循环体
3.>with语句
with语句是JavaScript中的特殊语句、
with(obj) {
statement; //这里可以直接使用obj上的属性和方法、而不必像使用obj.name来使用name属性、
}
4.>switch语句
switch(val) { // val的值可以是任何类型的值、但在Java中val的值只能是int类型的、
case 'A' : alert('A');break;
case 'B' : alert('B');break;
default : alert(val);
}
5.>函数
function functionName (params) {
statement;
}
var functionName = function(params) {statement;};