1.javascript跟java一点关系也没有,他是由网景公司Netscape创造的,原名叫livescript,为了蹭java的热度,改名叫javascript。Netscape是第一个创造浏览器的,叫navigator,收费的,但是要运行在微软的操作系统上,后来微软也开始弄自己的浏览器,IE,而且不收费,所以,慢慢的,Netscape公司就GG了,那一波团队,创造了新的公司,并且创造了火狐。java是Sun公司开发的。JavaScript之所以这么火,是因为js是客户端语言,nodejs是服务端语言,所以,会了js,你既可以做客户端,又可以做服务端。
问题:把代码写在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("Hello World
");//Hello World且是h1标题
1.typeof 可以查看变量数据类型
typeof 有两种写法
console.log(a);//打印变量的值
console.log(typeof a);//打印变量类型
number 无论是整数还是浮点数
string 无论是字符还是字符串
boolean true、false
undefined 当变量未赋初值,那么变量的值和类型都是undefined
null 未找到DOM对象时
也可以,因为以后学的jQuery就全都是 也 可 以 , 因 为 以 后 学 的 j Q u e r y 就 全 都 是
多个单词的变量名,用驼峰命名法或匈牙利命名法
当变量名包含多个单词时,用驼峰命名,第一个单词首字母小写,其他的都大写
console.log()
alert()
prompt()
1.条件判断if else
?:
if 语句只判断值,不判断类型,switch既判断类型,又判断值
parseInt();
取整,直接把小数点后面的去掉,而且typeof parseInt() 是number
定义和调用的顺序随便,可以先定义再调用,也可以先调用,后定义
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();
//数组
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
//定义对象
var obj1 = new Object();//new了一个对象,所以说,程序员最不缺对象,new一个就行了嘛
obj1.name = "肖战";//给你的对象设置属性
obj1.high = 180;
obj1.love = function(){
//给你对象设置方法
alert("爱李雪");
};
console.log(obj1.name);
console.log(obj1.love());//调用方法后面得有小括号
//定义对象的第二种方式
var father = {
name: "lili",//注意这里不是;而是逗号
age : 20,
} ;
var son = {
name : "lii",
dad : father,//属性值是个对象
}
console.log(son.dad.age);
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
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数据类型是number
NaN 布尔值是false
NaN==NaN也是false
NaN和谁都不相等,包括他自己