1. js代码写在什么位置?
a. 将js代码写在页面中
b. 导入js文件
好处很明显,只是这两者的区别是什么呢?现阶段的理解:导入的每一个js文件就是对应一个对象,这就和java中导入(import)类一样,有一点不一样的是在导入的js中可定义函数。
2. js的数据类型
a. 简单数据类型,字符串,数字,布尔,空值(null),未定义(undefined)
b. 复杂数据类型,就是js的内置对象,Array,Date等等
3. "=="和"==="的区别
简单数据类型,“==”仅仅比较值是否相同,不考虑数据类型是否相同,“===”不仅比较值,还比较数据类型
复杂数据类型,没有发现区别,两边变量的引用至同一对象,就返回true,否则false
var str1 = "23";
var str2 = 23;
console.log(str1 == str2); // true
console.log(str1 === str2); // false
var date1 = new Date("1999-09-09");
var date2 = new Date("1999-09-09");
console.log(date1 == date2); // false
console.log(date1 === date2); // false
4. valueOf()和toString()方法
js的内置方法,和java中的toString()方法,区别就是多试试就知道了。
5. 控制语句
就是简单的if,while,for,没什么可说的。
6. 函数,方法和变量
函数:可以完成固定功能的代码块;
方法:将函数指定为某一对象的动作,就叫方法;
可以认为js中没有函数,只有方法。原因是在js中写的函数,可以用window对象调用,就可以认为js中的函数就是window对象的方法,所以说js中没有函数,只有方法。
// 定义的‘函数’
function fn(){
console.log("this is a function");
}
// 调用
fn();
window.fn() // 两者是一样的,所以可认为fn()函数实际就是window的方法
变量:不知道怎么说才能说明白,我只是简单理解为,变量分两种,属性变量和方法变量
// 属性变量
var a = "a";
// 方法变量
var b = function(name){
document.write(name);
}
反正不知道怎么说明,标记一下,做个记号
var text = "this is a object";
var fn = function(){
console.log("this is a function");
};
var obj = {
id: 1,
name: 'obj1',
text: text,
fn: fn
}
定义了三个变量,text,fn,obj。
text是属性变量,fn是方法变量,obj变量指向一个对象,对象有属性:id, name, text, fn,但fn属性的值是一个方法变量,所以我说fn是obj的方法而不是属性,既然是方法,为什么fn的赋值是 fn而不是 fn(), 这又是为什么????现在肯定整不明白,管它呢,跳过,标记,以后明白了再说。
7. js的内置对象-——Array
这个对象比较特殊,我不明白怎么会不用new就可以创建一个对象呢,我觉得说是一种特殊的数据类型更合适。
var arr = new Array('a', 'b', 'c'); // new 出来的数组对象
var arr2 = ['a', 'b', 'c']; // 这根本就不是new出来的,但效果和new一样,这明显将简单的问题复杂了
只要是对象就一定有属性和方法
属性: length
方法:多的不得了,contact(),join(),push(),pop(),forEach()(这也是方法,这东西怎么用??),indexOf(),我竟然还发现了sort()方法,我想这个sort()方法是不是可以改呀,排序总不能就一种排法的对吧,但怎么弄呢?标记,等明白了再说。
先简单的明白这些就可以了,以后专门的整一章更系统的学习Array对象。
8. js的内置对象——String
好像是我把问题想复杂了,这个String对象和Array就是一样的。只是方法不同,没什么说的。
比较头痛的是这里竟然涉及到正则表达式,看来简单问题并不是这么简单的。标记,跳过,管它正则不正则,没空搭理这麻烦的事物。
这里还涉及到一个类型转换的问题,最多的是数字转字符(很简单),字符转数字(标记,现在不管它,迟早要解决,等不得不解决在解决)。