一、介绍
1.javascript跟java一点关系也没有,他是由网景公司Netscape创造的,原名叫livescript,为了蹭java的热度,改名叫javascript。Netscape是第一个创造浏览器的,叫navigator,收费的,但是要运行在微软的操作系统上,后来微软也开始弄自己的浏览器,IE,而且不收费,所以,慢慢的,Netscape公司就GG了,那一波团队,创造了新的公司,并且创造了火狐。java是Sun公司开发的。JavaScript之所以这么火,是因为js是客户端语言,nodejs是服务端语言,所以,会了js,你既可以做客户端,又可以做服务端。
1.书写位置
问题:把代码写在body结束的上面和写在window.onload里有啥区别
(1)前者是等DOM结构加载完成之后执行(DOM结构:img标签啦,li标签啦)所以他要快些
(2)后者不仅要等DOM结构加载完成,还要等所有资源文件加载完后才执行(资源文件:图片啦,外部的js文件啦),so他要慢些,window.onload不一定要写在head里,写在任何一个地方都行
var a = 5 ;
var b = "abc";
var c;
console.log(a);//5
console.log(c);//undefined
console.log("a");//a 带双引号的就会被当成字符串
alert(a);//alert也是辅助我们调试的工具,早期浏览器没有console,所以用alert调试,很麻烦
document.write("<h1>Hello World</h1>");//Hello World且是h1标题
注意百度和爱奇艺的console
二、基本数据类型
1.typeof 可以查看变量数据类型
typeof 有两种写法
console.log(a);//打印变量的值
console.log(typeof a);//打印变量类型
(1)五种基本数据类型
number 无论是整数还是浮点数
string 无论是字符还是字符串
boolean true、false
undefined 当变量未赋初值,那么变量的值和类型都是undefined
null 未找到DOM对象时
(2)变量命名
也可以,因为以后学的jQuery就全都是
也
可
以
,
因
为
以
后
学
的
j
Q
u
e
r
y
就
全
都
是
多个单词的变量名,用驼峰命名法或匈牙利命名法
当变量名包含多个单词时,用驼峰命名,第一个单词首字母小写,其他的都大写
(3)声明变量
还是声明一个同时定义的比较好
(4)字符串拼接
三、计算
(1)后自增
(2)前自增
(3)=赋值
==判断值是否相等
===判断值和类型是否相等
(4)逻辑运算符
四、类型转换
(1)数字与字符串相遇时
(2)布尔Boolean与数字相遇时
(3)转化成字符串
(4)转成Boolean
五、辅助调试
console.log()
alert()
prompt()
六、条件语句
1.条件判断if else
(1)三目运算符表判断
?:
if 语句只判断值,不判断类型,switch既判断类型,又判断值
parseInt();
取整,直接把小数点后面的去掉,而且typeof parseInt() 是number
七、循环语句
(1)for循环
(2)while循环
(3)for in 循环
八、函数
(一)、定义函数有两种方式
1.第一种
定义和调用的顺序随便,可以先定义再调用,也可以先调用,后定义
xue();//函数调用
//函数声明/定义
function xue(){
console.log("Hello World");
}
//计算三角形面积
function angleArea(){
var wide = prompt("请输入三角形的底边长度","");
var high = prompt("请输入三角形的高","");
var area = wide * high / 2;
if(isNaN(area)){
alert("您输入数据有误");
}else{
alert("三角形面积为"+area);
}
}
angleArea();
所以,js函数的实参形参很随意,不像别的语言那么严格,但是从可读性讲,还是一一对应的比较好
返回值
function add(a,b){
return a+b;//如果这个函数执行完就OK了,下面不会用到它的结果,那就不用return返回值,如果在下面需要
//用到函数结果,那就用return了
}
var result =add(3,9);
console.log(result+2);
(二)把函数赋值给一个变量(函数直接量)只能先定义后调用
var fun1 = function (){
console.log("这是函数直接量的方式");
}
fun1();
作用域
九、数组
(一)定义数组的第一种方式
array
//数组
var arr = [1,2,3,5,6];
for( var i = 0 ; i < arr.length; i++){
console.log(arr[i]);
}
(二)第二种方式
var arr = new Array();//括号里不用写数组长度,因为他会根据你下面的赋值而改变
arr[0] = 1;
arr[1] = 3;
arr[100] =9;
console.log(arr[7]);//undefined
console.log(arr.length);//101
十、对象
(1)定义对象的第一种方式
//定义对象
var obj1 = new Object();//new了一个对象,所以说,程序员最不缺对象,new一个就行了嘛
obj1.name = "肖战";//给你的对象设置属性
obj1.high = 180;
obj1.love = function(){//给你对象设置方法
alert("爱李雪");
};
console.log(obj1.name);
console.log(obj1.love());//调用方法后面得有小括号
(2)第二种方式
//定义对象的第二种方式
var father = {
name: "lili",//注意这里不是;而是逗号
age : 20,
} ;
var son = {
name : "lii",
dad : father,//属性值是个对象
}
console.log(son.dad.age);
那啥时候用对象.属性,啥时候用对象[属性]呢
(3)for in就是用来循环数组或对象的
var arr = ["jjj","jjjjjjj","kkkkkkk"];
for( var p in arr){
console.log(p + ":" +arr[p]);
}
var obj1 = {
name : "lili",
age : 12,
height:130,
p: "这个p是属性不是代表下标的变量"
};
for ( var p in obj1){
console.log(p+ ":" + obj1[p]);
}
栈和堆
栈是先入后出,队先进先出
undefined布尔值是false,null也是false
if(null===undefined){//如果是==的话,就会输出true
console.log("true");
}else{
console.log("false");
}
console.log(typeof null);//object 起初是个语法错误,后来被沿用
console.log(typeof undefined);//undefined
十一、dom对象( document object modle)
var oH1 = document.getElementById("hh");
console.log(oH1);
获取到了对象,就可以获取它的属性了,除了class要写成className外,其他都正常
var oH1 = document.getElementById("hh");
console.log(oH1.className);
console.log(oH1.id);
console.log(oH1.align);
如果,这个属性不是css自带的,那么就要用getAttribute()
console.log(oH1.getAttribute("xx"));
十二、NaN
NAN数据类型是number
NaN 布尔值是false
NaN==NaN也是false
NaN和谁都不相等,包括他自己
十三、toString()
parseInt() 能把小数部分去掉,保留整数
十四、把原先写的js挪到这来
1.理解JavaScript未定义变量
2.JavaScript 转义字符串中的特殊符号
3.JavaScript 获取字符串的长度
4.JavaScript字符串的单个字符不能随便改变
4.JavaScript 使用索引修改数组中的数据
5.JavaScript 使用索引操作多维数组
6.push()在数组末尾加n个元素,并返回此时数组元素个数
7.pop()删掉数组最后一个数据,并返回删掉的值
8. unshift()在数组最前面加n个数据,并返回元素个数
9. shift()删除数组第一个数据,并返回删掉的那个数据