JavaScript简介
JavaScript 是互联网上最流行的脚本语言,这门语言可用于 HTML 和 web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。特性:
1.JavaScript 是一种轻量级的编程语言。
2.JavaScript 是可插入 HTML 页面的编程代码。
3.JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。
JavaScript内容
JavaScript内容分为三大结构,分别是:
- 基础语法
- 操作BOM对象
- 操作DOM对象
基础语法部分
使用方式:
- 直接在HTML中引用
//在HTML5之前
<script type="text/javascript">
//JavaScript语句
</script>
//HTML5开始可以省去type属性因为将其默认值设置为了"text/javascript",所以可以直接这样写:
<scripe>
//JavaScript语句
</script>
- 从外部引入
例如有一个已经写好的js文件如下,路径为d:test.js
alert("Hello Wrold");
使用方式,在你的HTML文本中插入如下代码,然后打开用浏览器打卡HTML文件,会处出现一个弹窗,上面写着"Hello Wrold":
<script src="d:test.js"></script>
/*
注意:
因为HTML不同与java先编译再解析加载,而是直接被浏览器解析的,
所以在加载中是从上至下加载的。
而我们一般的会将<script>标签放在HTML的头部也就是<head>标签中。
但是,放入<head>标签中如果js语句出现错误,
那么后面的<html>文本将不能加载出来,
而且浏览器一般最多可以同时下载两个js文件,
js文件过多就会导致浏览器加载过慢,降低用户体验。
所以我们可以将其放在<body>的尾部,
但对于高度依赖js的HTML文本,也会因为js加载过慢导致页面渲染不够快。
所以在使用时应考虑好<script>标签的存放位置。
*/
变量:
JavaScript中变量的声明只有var这个关键字,根本不用管变量的数据类型,有没有很随意,更随意的是哪怕没有var这个关键字也可以!但不推荐使用
var a;//声明一个变量名为 a 的变量
var b = 5;//声明一个变量名为 b 的变量,并给 b 赋值为 5;
c = "abc";//声明一个变量名为 c 的变量,并给 c 赋值 "abc";但这种方式不推荐!
关于变量的作用域:
-
全局变量:定义在function外的
-
局部变量:定义在function内的
基本数据类型:
JavaScript有5种基本数据类型,分别是:
- undefined:指被声明的变量但还未被赋值
var undef ;
console.log(typeof undef);
/*
这时控制台就会输出 undefined,
typeOf undef 指 undef 的类型,
因为undef没有没赋值所以这里的结果为undefined。
*/
- number
指整数或浮点数
var num = 5;
console.log(typeof num);//输出结果为number
- boolean
指trun或false
var bol1 = true;
var bol2 = false;
//typeOf bol1和typeOf bol2都为boolean
- string
指字符或字符串,JavaScript是一门很随意的语言,并不像java那样分的特别细(单引号为char,双引号为string),所以不论是单引号还是双引号都为string。同时,虽然在JavaScript中string属于基本数据类型,但还有其对应的属性与方法。
var str = "abc";
var str2 = 'a,b,c';
var str3 = "abskajdnbd";
//typeOf str和typeOf str2都为string
str.length;//结果为3,表示str的长度
str.charAt(1)//结果为"b",表示返回脚标为1对应的值,角标以0开始
str2.split(",");//将str2以","分割为string数组。
str3.indexOf("b",0);//从0角标开始返回字符"b"第一次出现的角标位,结果为1;日过将0改为<=8的数,结果为8,如果改为>8的数则结果为-1表示没有
console.log(str3.substring(4,6));//返回位于角标4与6之间的字符串,结果为"aj",包含头不包含尾;
- null
与undefined不同,null指被赋值了,但值为null;
var n = null;
console.log(n);//结果为null,但是:
console.log(typeOf n);//这里的结果为Object,这是为什么呢?如果:
var x = typeOf n;
console.log(x===Object);//这时你会发现输出结果为false,这又是为啥呢?这个现象俗称薛定谔的对象 哈哈哈
- JavaScript的语法特性中有一个动态数据类型,即变量的数据类型会自动转换,写惯了java的同学有没有感觉很神奇。
var a = 5;
var a = "string";
var a = false;
var a = null;
引用数据类型
包括:Object,Array,Function
- Object的创建:
//1.
var student1 = new Object();//创建一个名为student1的对象
student1.name = "Marshall";//给对象设置属性name,并给属性赋值"Marshall"
student1.sex = "男"//给对象设置属性sex,并给属性赋值"男"
student1.show = function (){ //给对象创建一个方法show()
console.log(this.name+this.sex);//并让方法输出该对象的name与sex,this代表该对象
};
student1.show();//调用该对象的方法
//2.
var student2 = { //创建一个名为student2的对象
name:"logic", //在创建的时候直接给对象设置属性,并为属性赋值
sex:"男",
show:function (){ //在创建的时候直接给对象创建一个方法,名为show
alert(this.name+this.sex); //并以弹窗的形式输出对象的name与sex
}
};
student2.show(); //调用该对象的方法
//3.使用有参函数创建
function f(age,name) {
this.age=age;
this.name=name;
}
var student3 = new f(1,"l"); //创建对象,并传入属性值
student3.show=function () { //给对象创建一个方法show()
console.log(this.name+this.age);
}
student.show(); //调用该对象的方法
- Array
var arr = new Array(5);//创建数组对象,5表示数组长度
arr[0]=5;
arr[1]=7;
arr[2]=6;
arr[3]=11;
arr[4]=18;
console.log(arr);//结果为["5","7","6","11","18"]
//JavaScript神奇之处
arr[6]="asd";
console.log(arr);//结果为["5","7","6","11","18","asd"]
//JavaScript的不同就在于可以给数组自动扩充长度,而且因为动态类型的特性,一个数组中可以有不同类型的值
//创建数组的第二种方式
var arr = new Array(6,8,9,15);
arr.length;//结果为4
//arr.jion();//将数组转换为string并返回
arr.sort();//对数组进行从大到小的排序,返回一个数组对象
arr.push(18);//在数组的尾部增加一个值为18的数
- Function
函数,等同于 java中的方法
function frist(){
console.log("无参函数");
}
frist();//输出"无参函数"
function second(string){
console.log(string);
}
second("有参函数");//输出"有参函数"
运算符号:
和JAVA大致相同,分为:
- 算数运算符:+,-,*,/,++,–;
- 赋值运算符:=,+=,-=;
- 比较运算符:<,>,<=,>=,= =,!=,= = =,!===
这里要和java不同,一般用===来比较,因为JavaScript会自动转换数据类型:
var num = 123;
var str = "123";
console.log(num==str);//结果为true,但是:
console.log(num===str);//结果才为false
- 逻辑运算符:&&,|| ,!
逻辑语句(同JAVA)
- 条件语句判断if ,else if ,else和switch
//if全家桶
var a = 5;
if(a<5){
console.log("小了");
}else if(a>5){
console.log("大了");
}else{
console.log("嗯冲!");
}//结果为嗯冲!
//switch
switch (new Date().getDay()) { //new Date().getDay()会返回一个number,代表一周内的第几天
case 0:
day = "星期天";
break;
case 1:
day = "星期一";
break;
case 2:
day = "星期二";
break;
case 3:
day = "星期三";
break;
case 4:
day = "星期四";
break;
case 5:
day = "星期五";
break;
case 6:
day = "星期六";
}
console.log(day);//自己试试看
- 循环语句 while和for
var a = 6;
while(a>0){ //只要()内为true就会执行
console.log("嗯冲!");
a--;
}//打印6次"嗯冲!"
for(var i = 0;i<a;i++){
console.log(i);
}//打印0-5
第一次写blog,有不足之处还望指点!鞠躬!