概述
JavaScript是世界上最流行的脚本语言,是一种运行在浏览器中的解释型的编程语言,能够实现跨平台、跨浏览器。虽然只是十多天时间的产物,并且有很多的缺陷和陷阱,但也造就了JavaScript的灵活和强大。随着Node.js的兴起,JavaScript已经从单纯实现前端互动,发展到可以全栈实现整个应用。尤其是在移动互联网蓬勃发展以及应用追求极致用户体验的今天,JavaScript更是必须要重视和掌握的。
变量
使用var关键字进行变量的声明,声明的同时也可以进行赋值。变量的声明只能有一次,但赋值可以有多次。如果只声明变量,但是变量没有被赋值,此时变量的值为undefined。
JavaScript变量的类型取决于右侧的对象。
var variable_name1 = 5;
var variable_name2 = 5.3;
var variable_name3 = false;
var variable_name4 = 'zhangsan';
变量的作用域
java:
if(true) {
int a = 1;
}
System.out.println(a); // 编译错误,超出作用域
javascript:
if(true){
var a = 1;
}
console.log(a); // 1 JavaScript没有块级作用域
JS中的六大数据类型
js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Undefined,Null),和3种引用数据类型(Object,Function,Array)。
基本数据类型
1.Number类型
Number类型包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后面至少有一位数字)两种值。
2.String类型
单引号或双引号扩起来的字符集合
3.Boolean类型
该类型只有两个值,true和false
4.Undefined类型
只有一个值,即undefined值。使用var声明了变量,但未给变量初始化值,那么这个变量的值就是undefined。
5.Null类型
Null类型被看做空对象指针,Null类型也是空的对象引用。
三大引用类型
1.Object类型
我们看到的大多数类型值都是Object类型的实例,创建Object实例的方式有两种。
第一种是使用new操作符后跟Object构造函数,如下所示
var person = new Object();
person.name = "Micheal";
person.age = 24;
第二种方式是使用对象字面量表示法,如下所示
var person = {
name : "Micheal",
age : 24
};
alert(person.name);
2.Array类型
数组的每一项可以用来保存任何类型的数据,也就是说,可以用数组的第一个位置来保存字符串,第二个位置保存数值,第三个位置保存对象....另外,数组的大小是可以动态调整的。
创建数组的基本方式有两种
第一种是使用Array构造函数,如下所示
var colors = new Array("red","blue","yellow");
第二种是使用数组字面量表示法,如下所示
var colors = ["red","blue","yellow"];
3 Function类型
每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法。函数通常是使用函数声明语法定义的,如下所示
function sum(num1,num2){
return num1 + num2;
};
这和使用函数表达式定义函数的方式相差无几。
var sum = function (num1,num2){
return num1 + num2;
};
var result = sum(5,8);
alert(result);
typeof 操作符
由于js中的变量是弱类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是typeof关键字.
typeof 123 //Number
typeof 'abc' //String
typeof true //Boolean
typeof undefined //Undefined
typeof null //Object
typeof { } //Object
typeof [ ] //Object
js的三种输出方式
/*
* 控制浏览器弹出一个提示框
*/
alert("Hello JavaScript");
/*
* 控制浏览器在页面中输出一个内容
* document.write()向body中写一个内容
*/
document.write("看我出来不???");
/*
向控制台输出一个内容
* */
console.log("你看我在哪出来~~~");
js编写的位置
你也点我一下
你也点我一下
练习
求100以内的偶数和
js字符串
字符串练习
编写一个程序,将某个字符串反转
数组
数组简介
数组字面量表达方式(推荐)
数组的常用方法
push(),pop(),unshift(),shift()
遍历数组方式一
遍历数组方式二:
补充两个常用方法
filter方法 (过滤元素)
求字符串长度是3 的所有元素
var arr = ["孙悟空","猪八戒","沙和尚","唐僧", "孙悟空","猪八戒","沙和尚","唐僧"];
var newarr = arr.filter(function (v, index, obj) {
return v.length == 3;
})
document.write(newarr)
输出结果:孙悟空,猪八戒,沙和尚,孙悟空,猪八戒,沙和尚
满足条件的返回true,存在新数组中
map方法
var arr = ["孙悟空","猪八戒","沙和尚","唐僧", "孙悟空","猪八戒","沙和尚","唐僧"];
var newarr = arr.map(function (v, index, obj) {
return 'hello' + v
})
document.write(newarr)
输出结果:hello孙悟空,hello猪八戒,hello沙和尚,hello唐僧,hello孙悟空,hello猪八戒,hello沙和尚,hello唐僧
通过映射将原有数组变换成一个新数组,长度相同,元素不同
数组去重的巧妙方法
var arr = ["孙悟空","猪八戒","沙和尚","唐僧", "孙悟空","猪八戒","沙和尚","唐僧"];
var newarr = arr.filter(function (v, index, obj) {
return arr.indexOf(v,index+1) == -1;
})
document.write(newarr)
查一个元素,如果他后面还有跟他一样的元素,就不加到新数组中,如果没有跟他一样的元素,就把他加到新数组中
数组方法:slice(),splice():
练习 去除调用数组中重复的数字(相对麻烦的方法,简单方法看上面)
数组的其他方法
返回值是正数,代表第一个数比第二个数大,返回值是负数,代表第一个数比第二个数小,返回0,代表相等,类似JAVA的实现Comparable接口
补充一点
如何打乱一组数
var arr = [5,8,9,45,25,47,36,64,52]
arr.sort(function (a,b) {
return Math.random() - 0.5;
})
document.write(arr);
输出一个0到1之间的随机数,减去0.5 , 这样返回值有可能是正数,有可能是负数,系统就会随机排序