JS组成
ECMAScript(解释器:把我们的语言解释给计算器)核心
DOM(Document Object Model)赋予了js操作html的能力
document
BOM(Browse Objectr Model)操作浏览器(例如谈窗口等和浏览器打交道的操作) window
兼容性
ECMA 几乎没有兼容问题
DOM 有一些操作不兼容
BOM 无兼容问题(完全不兼容)
变量类型
类型:typeof运算符
提示:一个变量最好只存一种类型数据
number 数字
<script>
var a=12;
alert(typeof a); //弹出number
</script>
string 字符
<script>
alert(typeof a); //弹string
</script>
**以下 <script></script>
省略
boolean 布尔
var a=true;
alert(typeof a);//弹出 boolean
function 函数
a=function(){
alert('aaa') ;
};
//弹出function
object 对象
a=document;
alert(typeof a); //弹出object
undefind 未定义(1.真的未定义2.定义了但没有值)
1.
alert(typeof b);
2.
var b;
alert(typeof b)
字符串转成数字
parseInt
例1:
var a='12';
alert(parseInt(a)+1); //弹出结果13
例2:
var a='12px';
alert(parseInt(a)); //弹出结果12
例3:
var a='12px45144';
alert(parseInt(a)); //弹出结果12
例4:
var a='abc';
alert(parseInt(a)); //弹出结果NaN(Not a Number非数字)
总结:从第一个字符开始判断是否为数字,遇到不是数字的就会跳出;
判断parseInt结果是否为NaN
例1:
var a=parseInt('abc');
var b=parseInt('ccc');
alert(a==b); //结果本应该为true,但是此时弹出结果为false
结论:NaN和NaN不相等。
例2:
var a=parseInt('abc');
alert(isNaN(a)); //结果为true
结论:判断parseInt结果是否为NaN,可以用js里面提供的一个函数isNaN()来判断 。
parseInt是用来转换成整数的
例:
var a='3.5';
alert(parseInt(a)); // 结果为3
parseFloat是用来转换成小数的
var a='3.5';
alert(parseFloat(a)); // 结果为3.5
若想转一个数字,但不知道是小数还是整数,不用担心,用parseFloat都可以
例:
var a='3';
alert(parseFloat(a)); // 结果为3
隐式类型转换
例1:
var a=5; //数字
var b='5'; //字符
alert(a==b); //结果为true
alert(a===b); //结果为false
双等号先转换类型,然后比较
三等号不转换类型,直接比较
例2:
var a='12';
var b='5';
alert(a+b); //结果为125
“+”号的功能
1.字符串连接
2.数字相加
例3:
var a='12';
var b='5';
alert(a-b); //结果为7
“-”号作用 数字相减
变量作用域(变量作用范围)
例1:
function aa()
{
var a=12; //局部变量 只能在定义的函数中使用,即目前只能在aa()中使用
}
function bb(){
alert(a); //此处报错 "此处a未定义"
}
例2:
var a; //全局变量 在任何地方都能用
function aa()
{
a=12;
}
function bb(){
alert(a); //弹出12
}
闭包
什么是闭包:子函数可以使用父函数的局部变量
function aa() //父函数
{
var a=12;
function bb(){ //子函数
alert(a);
}
bb();
}
aa(); //弹出12
命名规范
可读性(能看懂)
类似aaa、bbb的少用,尽量使用一些可以从名字看出意义的名字
规范性(符合规则)
↓
匈牙利命名法:
类型前缀:
首字母大写
例如:getElementById oDivUserLogin
反例:getelementbyid odivuserlogin