JavaScript组成
ECMAScript(核心):解释器,翻译 几乎没有兼容性问题
DOM:Document【html文档】 Object Model 赋予js操作html的能力 有一些操作不兼容
BOM:Browser Object Model 没有兼容问题(完全不兼容)
typeof运算符 返回变量类型
常见类型:number、string、boolean、undefined、object、function
一个变量应该只存放一种类型的数据
var a=12;
alert(typeof a); //number
a='abcdef'
alert(typeof a); //string
a=true
alert(typeof a); //boolean
a=function()
{
alert('abcd');
}
alert(typeof a); //function
a=document
alert(typeof a); //object
alert(typeof b); //undefined
var b;
alert(typeof b); //undefined
//出现undefined情况
//1.确实是没定义
//2.定义但未给值
显式类型转换(强制类型转换)
parseInt:字符串转数字
parseFloat:字符串转小数
isNaN:检测结果是否为NaN
var a='abcd';
alert(parseInt(a));
//NaN Not a Number 非数字
//任何数+NaN都等于NaN
var a=parseInt('abcd')
var b=parseInt('wxyz')
alert(a==b) //结果:False
// NaN 和 NaN 并不相等
隐式类型转换
var a=5;
var b='5';
alert(a==b) //true 先转换类型,再比较
alert(a===b). //false 不转换类型,直接比较
var a=12;
var b='5';
alert(a+b); //结果:125 +含义:1.字符串连接 2.数字相加
alert(a-b); //结果:7 —含义:只有数字相减
//计算机优先挑选简单的执行
作用域
局部变量和全局变量
var a; //全局变量,在任何地方都能用
function show()
{
var a=12; //局部变量;只能在定义它的函数里边使用
}
闭包
闭包:子函数可以使用父函数的局部变量
function aaa() //父函数
{
var a=12;
function bbb() //子函数
{
alert(a);
}
bbb()
}
//结果:12
js命名规范
1.可读性--能看懂
2.规范性--符合规则
匈牙利命名法
1.类型前缀
| 类型 | 前缀 | 类型 | 实例 |
|---|---|---|---|
| 数组 | a | Array | aItems |
| 布尔值 | b | Boolean | bIsComplete |
| 浮点数 | f | Float | fPrice |
| 函数 | fn | Function | fnHandler |
| 整数 | i | Integer | iItemCount |
| 对象 | o | Object | oDiv1 |
| 正则表达式 | re | RegExp | reEmailcheck |
| 字符串 | s | String | sUserName |
| 变体变量 | v | Variant | vAnything |
2.首字母大写
每个单词的首字母都大写