本章内容:
- 语法
- 数据类型
- 流控制语句
- 理解函数
3.1 语法
借鉴C语言;
3.1.1区分大小写
ECMAScript中的一切(变量,函数名和操作符)都区分大小写。
3.1.2 标识符
标识符,就是指变量,函数,属性的名字,或者函数的参数。组合规则如下:
第一个字符必须是字母,下划线_或者美元符号$
其他字符可以是字母,下划线_或者美元符号$或数字。
3.1.3 注释
// 单行注释
/*
多行注释
*/
3.1.4 严格模式
"use strict"
3.1.5 语句
分号:
var sum = a+b; //记得加分号,不是必须,但是可能会导致压缩出错。
3.2 关键字和保留字
3.3 变量
局部变量
function test(){
var message = "chai"; //局部变量
}
test();
alert(message); //错误!
全局变量
function test(){
message = "chai"; //全局变量 声明时省略 var 操作符
}
test();
alert(message); //chai
一条语句定义多个变量
var message ="chai",
found = false,
age = 29;
3.4 数据类型
五种基本数据类型(Number,String,Boolean,Null,Undefined),和一种混合数据类型(Object)。
3.4.1 typeof 操作符
作用:检测给定变量的数据类型,返回值和对应解释如下:
Undefined | Boolean | String | Number | Object | function |
未定义 | 布尔值 | 字符串 | 数值 | 对象或者Null | 函数 |
3.4.2 Undefined类型
Undefined类型只有一个值,即特殊的Undefined。
在声明一个变量但未对其初始化时,这个变量的值:Undefined
eg:
var message;
alert(message==undefined); //返回true
特别注意:alert下面2个的区别 ↓
未声明的变量 | 声明变量未定义值 |
报错 | Undefined |
3.4.3 Null类型
Null只有一个值,即Null。Null对象表明一个空对象指针,所以用typeof 检测时,返回:Object。
适合什么情况下用此类型?
对于以后要保存对象的变量,但是目前还没真正保存对象,就应该明确将该变量保存为Null值。
3.4.4 Boolean类型
布尔Boolean类型表示逻辑实体,它只有两个值,保留字true和false,分别代表真和假这两个状态。
应用场景
===条件和循环语句===
if(a > 1){
//条件为true时,执行此处
}else{
//条件为false时,执行此处
}
===逻辑运算符===
console.log(!!1);//true
console.log(!!0);//false
===关系运算符===
console.log( 1 > 2);//false
3.4.5 Number类型
NaN,非数值。
非数值类型检测:isNaN()函数。eg如下;
alert(isNaN(10)) //返回false
数值转换
3个函数 ,非数值--》数值。
Number(),
如果是Boolean值,true和false将分别转换为1和0。
如果是null,返回0;
如果是underfined,返回NaN。
...详见书
var num1 = Number(“Hello world!”); //返回NaN 不好汉任何有意义的数字值
var num2 = Number(“000011”); //返回11
var num3 = Number(true); //返回1
pareInt(),
转为整数格式,
parseFloat()
...详见书
3.4.5 String类型(字符串类型)
1,字符串字面量
...
//计算长度:
var text =“hello world!”
alert(text.lenght)
2,转化为字符串
toString() 方法
....见书
3.5.3 布尔操作符
3个操作符:非(NOT),与(AND),或(OR)
1,逻辑非
逻辑非由一个叹号 ! 表示,可以应用于任何值。逻辑非操作符首先会把它的操作数转换为一个布尔值,然后对其求反。
2,逻辑与
逻辑与由两个 && 表示,可以应用于任何值。
3,逻辑或
逻辑或由两个 || 表示,
3.4.6 Object类型
数据和功能的集合,并添加属性和方法。
....见书
3.6 语句
3.6.1 if 语句
if(i>25){
alert("大于25");
}else if(i<0){
alert("小于0");
}else{
alert("介于0~25之间")
}
3.6.2 do-while 语句
后测试循环语句,至少会被执行一次。(先干了再说!)
var i=0;
do {i +=2;}
while ( i < 10 );
alert(i)
3.6.3 while 语句
前置测试循环语句,在循环体代码被之前前,都会判断条件。条件不符,可能永远不会被执行。
var i=0;
while (i<10){
i+=2;
}
3.6.4 for 语句
var count = 10;
for(var i = 0; i < count; i++){
alert(i);
}
3.6.5 for-in 语句
for-in 是一种精准的迭代语句,可以用来枚举对象的属性。
eg:遍历数组
var x
var mycars=["VW","Volvo","BMW"]
for (x in mycars)
{
document.write(mycars[x] + "<br />")
}
eg:遍历对象(取 键 / 值)(重点!)
/*------------二维对象取键和值---------------*/
var obj ={
right_001:{ name:"高高",tel:"13687871111"},
right_002:{ name:"大柴",tel:"13687872222"},
right_003:{ name:"小柴",tel:"13866001234"}
}
//遍历出--》键
for (var key in obj) { //特别注意 :遍历的是键
alert(key) //返回 right_001; right_002; right_003
}
//遍历出--》值
for (var key in obj) {
alert(obj[key]) // 返回 object object object
console.log(obj[key]) //逐一打印出来:
}
下面这个demo是用for in 遍历对象--用2个数组分别存储键/值 (重点!)
var obj={"name":"wjy","age":26,"sex":"female"};//定义一个object对象
var keys=[];//数组key
var values=[];//数组value
for(var key in obj){
keys.push(key); //键塞到数组
values.push(obj[key]);//值塞到数组
}
alert("keys键 :"+keys+" 值values:"+values);
3.6.9 switch 语句
可以在switch语句中,case的值可以是常量,变量或表达式。
eg:经典案例(根据月份信息,页面滑动到自定的tr行。)
$(function(){
var date=new Date;
var month=date.getMonth()+1;
//定义函数
function go_this( current_month ){
current_month.css("background","#fcd54f");
var current_nonth_len = current_month.length;
if(current_nonth_len<=0)
{
alert("本月无续费项目")
}
else{
alert("本月是"+month+"月,一共有"+current_nonth_len+"个客户需要续费")
$("html,body").animate({scrollTop:current_month.eq(0).offset().top},500)
}
}
//条件判断
switch (month){
case 1:
go_this($(".month-1"))();
break;
case 2:
go_this($(".month-2"))();
break;
case 3:
go_this($(".month-3"))();
break;
case 4:
go_this($(".month-4"))();
break;
case 5:
go_this($(".month-5"))();
break;
case 6:
go_this($(".month-6"))();
break;
case 7:
go_this($(".month-7"))();
break;
case 8:
go_this($(".month-8"))();
break;
case 9:
go_this($(".month-9"))();
break;
case 10:
go_this($(".month-10"))();
break;
case 11:
go_this($(".month-11"))();
break;
case 12:
go_this($(".month-12"))();
break;
}
})
<tr class="month-1">
...
</tr>
3.7 函数
$(function(){
//函数定义
function window_title(user_name,user_age){
alert("你是"+user_name+",今年"+user_age) //字符串与参数的拼接
}
//函数调用
$("#btn").click(function(){
window_title('大柴','35') //方法名,参数;
})
})