JavaScript分为三部分
ECMAScript:
DOM:文档对象模型 Document object model(整合js和html和css)
BOM:浏览器对象模型 Broswer object model(整合js和浏览器)
JavaScript在开发中绝大数情况是基于对象的,也就是面向对象的。
ECMAScript基础:
//在页面上使用script标签,在标签中写js代码
<script type="text/javascript">
alert("hello world");
</script>
//使用src属性引入外部js文件,在引入外部js的script标签中不能再写js代码。
<script type="text/javascript" src="hello.js"></script>
//声明变量,js是弱类型语言,变量类型是可以变化的(从int型变成String型)
//js注释的写法和java一样,只不过没有文档注释。
//js每行语句用分号结束,也可以不适用分号
//声明变量时,加上var的变量,作用范围为当前代码块,不加var的情况下,作用范围为全局
//语法区分大小写
<script type="text/javascript">
var a = 1;
</script>
js中的数据类型有两种1:原始类型和对象类型
1:原始类型 有5种
number 数字(不分整形和浮点型)
string 字符串
boolean 布尔
null 一般人为的赋值为null,对象类型的占位符,(比如需要一个对象类型,很久以后才用到,如果提前声明浪费内存)
undefined :null的衍生值,通常是系统自动赋值的。当我们创建一个变量,并且没有初始化
运算符 typeof 返回原始类型的类型,判断类型。
例如 var a=0; alert(typeof a);
分支语句
js中的分支语句和循环语句和java一样
js中的运算符
var a="1234";
a= +c;//转换为数字类型
类型转换
判断语句中的参数为下列中的类型转换为boolean的情况:
number转型为boolean 除了0都是true字符串不为空转化为boolean,那么其他都是true
null转化为boolean,返回false
undefined转化为boolean 返回false
var n= +"abc"
alert(n); //返回NaN (NaN:not a number)
var a="1"+1; 结果为11 //使用+时,如果相加的值包含字符串,会自动转换为字符串类型
var b="2"-1; 结果为-1 //其他数学运算符中,字符串会自动转换为数字
alert("2">1); 会把字符串“2”转换为数字类型,结果为true
alert("2">"1");字符串的比较规则,根据字符串的ASCII码对比。
alert("aa">"ab");返回flase,
alert("a">"b");返回flase
alert("aa">"aaa");返回flase
等性运算符
==,!=,===
alert(1==true); //返回true,,true的数字类型值为1
alert(2==true); //返回false,因为是把true的这个布尔型转化为数字型,2不等于1
alert(0==false); //返回true,flase的数字类型的值为0
alert(0==null); //返回false
alert(null==undefined)//返回true
alert(NaN==NaN);//返回false,凡是NaN参与判断运算符,除了!,!=,其他都为false
===全等于,在比较时包括类型本身。不会进行类型转换
alert(1===true);//返回false
var a="5";
if(a>3){
}
alert(typeof a);//返回的类型还是String,在条件语句中a>3会把a转换为数字进行判断为true,但是只是局部的。方法体外不会受到影响
三元运算符和java一样
方法对象的创建方式
function fun(){
alert("hello");
}
var fun2=funciton(){
alert("hello");
}
alert(fun2.length);//length属性代表方法参数的个数
toString():打印方法的定义
function fun1(a,b){
alert(a+b);
}
fun1(1,2);//输出3
fun1(1,2,3,4);//输出3,只取匹配的前两个参数
fun1();返回NaN,因为没有传入参数,所以a,b参数默认是undefined类型,连个undefined相加,所以返回NaN。
结论:js中的函数在调用时,只看函数名称,不看参数。