ECMAScript: 解释器、翻译 -->几乎没有兼容问题
DOM: Document Object Model -->有一些操作不兼容
BOM: Browser Object Model -->没有兼容问题(完全不兼容)
2.常见变量类型(typeof):
(基础面试题常考)
值类型:number、string、boolean、undefined
引用类型: object、function
经验:一个变量应该只存放一种类型的数据
显式类型转换(强制类型转换):parseInt()、parseFloat()
隐式类型转换:==(先转换类型,然后比较)
===(不转换类型直接比)
减法
3.变量作用域和闭包:
变量作用域:(即作用范围,-js里没有块级作用域,-只有函数和全局作用域)
-局部变量:只能在定义它的函数里面使用
-全局变量:在任何地方都能用
闭包:子函数可以使用父函数中的局部变量
4.命名规范:
可读性——能看懂
规范性——符合规则
匈牙利命名法:类型前缀(变量取名时用,函数不需要)、首字母大写
类型 |
前缀 |
类型 |
实例 |
数组 |
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 |
5.运算符中%取模(求余)的简单实例:
隔行变色:
1 var aLi=document.getElementsByTagName('li'); 2 3 for(var i=0;i<aLi.length;i++){ 5 //i 0 1 2 3 4 5 6.... 6 if(i%2==0){ 8 //0 2 4 6 8 10 9 aLi[i].style.background='#CCC'; 10 } 11 else{ 13 //1 3 5 7 9 14 aLi[i].style.background=''; 15 } 16 }
秒转时间:
1 var s=1345; 2 alert(parseInt(s/60)+'分'+s%60+'秒');
6.程序流程控制:
判断:if、switch、?:
1 if(条件1) 2 { 3 //语句1 4 } 5 else if(条件2) 6 { 7 //语句2 8 } 9 else 10 { 11 //语句n 12 }
1 switch(变量) 2 { 3 case 值1: 4 //语句1 5 break; 6 case 值2: 7 //语句2 8 break; 9 ...... 10 default: 11 //语句n 12 }
1 条件?语句1:语句2 //三元运算符
循环:while、for
1 while(条件) { 2 //语句 3 }
1 for(初始化;条件;自增){ 2 //语句 3 }
跳出:break、continue
1 for(var i=0;i<5;i++){ 2 if(i==2){ 3 //break; //整个循环中断了 4 continue; //本次循环中断了 5 } 6 alert(i); 7 }
真假:
真:true、非零数字、非空字符串、非空对象
假:false、数字零、空字符串、空对象(null)、undefined
7.json:
json与arr的区别:
1 var json={a: 12, b: 5, c: 7}; 2 var arr=[12, 5, 7]; 3 4 alert(json['a']); //下标不同 5 alert(arr[0]); 6 7 alert(json.length); //undefined 8 alert(arr.length); 9 10 //arr循环两种方法皆可 11 for(var i=0;i<arr.length;i++){ 12 alert('第'+i+'个东西:'+arr[i]); 13 } 14 15 16 for(var i in arr){ 17 alert('第'+i+'个东西:'+arr[i]); 18 } 19 20 //json的循环 21 for(var i in json){ 22 alert('第'+i+'个东西:'+json[i]); 23 }
(ps:本内容整理于blue视频教程及个人学习过程中总结,持续更新中)