基础
- js包括三部分:ES标准、DOM(document object model文档对象模型)、BOM(browser object model浏览器对象模型)
- DOM:提供了一组对象,让我们可以去操作网页。document,文档,一个网页就是一个文档。
- BOM:提供了一组对象,让我们可以去操作浏览器。
- 解释性语言:不需要编译(转化为二进制),直接运行。
- 面向对象:类似java和C++,js也是面向对象的语言。
- 动态语言
- 按照从上到下,按行执行。
- 每一句完整的js语句都要用分号结束,有的ide会自动加上,有的会报错,所以要养成好习惯。
- 多对键值对之间要用逗号隔开,而不是分号。
常见语句
- alert():控制浏览器弹出一个警告框。
- document.write():向网页的body中写一个内容。
- console.log():向控制台输出一个内容。(类似powershell、cmd)。
六种变量
- 基本数据类型:String、Number、Boolean、Null、undefined
- 引用数据类型 Obj
- 只有null、NaN等才是javascript的指定值,凡是字符串必须要用引号圈起来,否则控制台(console)会报错。形如:
Uncaught ReferenceError: female is not defined at jas.html:12:17
- 区别:前者而言,变量名与值都保存在栈(stack)中;后者的变量名和值也都保存在栈(stack)中,但是值只保存了其真正值所在堆(pile)的内存地址,再由地址找到其在堆(pile)中的位置。
- 助记:将引用变量Obj在stack中保存的address in pile 看作巫术娃娃。
- obj=null;只是将在stack中的adress in pile设置为null,取消其与堆内存中的数据的引用关系,并不是将pile中的数据取消掉。但是若有其他的引用变量,例如obj1,并不影响其引用关系。
匿名函数
- 匿名函数的作用,将一些语句封装起来实现某一项功能,但是一般只执行一次。多次执行的函数不要匿名,因为匿名函数只能通过重写函数体并执行的方式执行。
- 一定要将 “function()” 与函数体{}用小括号圈起来作为一个整体,否则会报错。形如:
Uncaught SyntaxError: Function statements require a function name
- 可以只声明匿名函数,但没有意义。
(function(){
alert("have");
});
- 声明并执行匿名函数
//无参匿名函数
(function() {
console.log("have");
})();
//带参匿名函数
(function(a, b) {
var sum;
sum = a + b;
alert("两数之和为: " + sum);
})(123, 456);
对象
对象的声明
- 先声明,后赋值
var obj1 = new Object();
obj1.name="peggy";
obj1.age=5;
obj1.gender="female";
obj1.sayName=function(){
console.log(obj1.name);
};
//也可以将函数体连同function()圈起来写,并不会报错,但一般用上面的语法。
/*obj1.sayName=(function(){
console.log(obj1.name);
});*/
obj1.sayName();
//上述匿名方法的执行类似下列匿名函数的执行
(function(){
alert("have");
})();
- 声明时赋值
var obj2 = {
name:"peggy",
age:5,
gender:"female",
sayName:function(){
console.log(obj2.name);
}
};
对象的方法
对象的属性值可以是匿名函数。
var obj2 = {
name:"peggy",
age:5,
gender:"female",
sayName:function(){
console.log(obj2.name);
}
};
obj2.sayName();
}