Java Script
JavaScript是一种脚本语言,虽然名字叫Java,但是和java没有一丝丝关系。是Netscape公司为了借用java的名气当时就使用了这个名字。
JavaScript丰富了互联网功能,在浏览器中扩展了javaScript支持,使得互联网可以有更多的动画,和与用户的互动。
js的特点:
1.是一种解释型的语言。
- 程序不需要编译
- 只有运行时才翻译成机器语言
- 每执行一次就要翻译一次。效率比较低
2.是一种弱类型的语言
弱类型语言的特点:其变量在使用之前无须声明,由解释器在运行时检查其数据类型。
JavaScript入门
JS的运行
1.直接使用javascript:前缀进行执行js的代码
eg:
<a href="javascript:alert('运行js!');"></a>
2.绑定一个事件,在事件被触发的时候运行js代码
eg:
<button onclick="alert('运行js!')"><button/>
这句代码就是当按钮被按下的时候触发这个弹窗。
3.在body中建立一个script元素,在元素中书写js代码
<script type="text/javascript">
alert("运行js!");
</script>
注意:一般script元素写在body的尾部。
4.引入外部js文件
<script type="text/javascript" src="js文件所在的url路径"></script>
和引用css文件相类似。
JS的基础语法
1.注释
注释的方式和java类似
// 这里是单行注释
/* 这里也是单行注释 */
/* 这里是
多行注释
*/
2.关键字,标识符
标识符的命名规范和java基本是一致的。
关键字也差不多。
3.直接量,变量
直接量:就是123,true,false,“嘻嘻嘻嘻”
变量:
注意:js的变量类型都取为var
var x = 1;//变量x的值是数字直接量1
无论变量什么类型,在申明的时候都用var。
4.一些简单语句
申明变量语句和java一样。
if语句:
if (num === 1){//if判断语句
alert(1);
}
可以看出基本和java是类似的。
5.数据类型
5.1基本数据类型
- number类型:包含整数和浮点数(即小数)。
- boolean类型:只有true和false两个值。
- string类型:字符串值必须用引号括起来,引号可以是单引号,也可以是双引号。
- undefined类型:专门用来确定一个已经创建但是没有初始值的变量。
-
null类型:用于表明某个变量值为空。
其中一些注意点:
1.在js里面,页面加载的过程中,会先将基本数据和引用类型加载到内存,这个时候不会赋值,执行到初始化代码才会赋值。
2.Boolean 对象中, 0,null,”” 都是默认false。其他都是true
5.2引用数据类型
- 原生对象:
所谓原生对象是由JavaScript所提供的、独立于宿主环境(即浏览器)的对象,简单点说,就是在ECMA-262标准中定义的对象。它包 括:Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、 SyntaxError、TypeError、URIError、Arguments、JSON。 - 内置对象:
内置类对象JavaScript中提供的、独立于宿主环境对象,这些对象在JavaScript程序执行时就已经存在。内置对象实际上也是原生对象 的一种,但是与原生对象不同的是,内置对象不需要显式的初始化,因为它已经初始化了。ECMA-262中只定义了两个内置对象:Global和 Math。 - 宿主对象
宿主对象指与宿主环境即浏览器有关的对象。所有的BOM和DOM对象都是宿主对象。
5.2.1原生对象
数组:
1.数组在创建的时候传递一个参数表示空间大小
2.传递多个参数表示初始化数据 js里面按照下标进行排列,对数据类型没有限制
3.两个数组的相加,是数据的组合,是字符串类型
4.arr.concat(arr1) 将两个数组转换成一个数组,返回的是一个数组对象
时间:
Date():
var da = Date();
Date()将Data看成一个普通的函数在调用
console.info(da);
var da1 = new Date(); //UTC 1970-1-1零点之间的毫秒数
console.info(da1);
var n = 365*24*60*60*1000;
var da2 = new Date(n);
console.info(da2);
console.info(da2.toLocaleString());
console.info(da2.toDateString());
console.info(da2.toLocaleDateString())
console.info(da2.toLocaleTimeString())
console.info(da2.toUTCString())
/*操作年月日*/
var year = da1.getFullYear();
console.info(year);
/*月份从0开始计算*/
var month = da1.getMonth();
console.info(month);
var date = da1.getDate();
console.info(date);
/*获取到每一周的周几*/
var day = da1.getDay();
console.info(day);
console.info("时"+da1.getHours()+"分"+da1.getMinutes()+"秒"+da1.getSeconds());
正则表达式:
RegExp正则表达式对象。
获取一个正则对象:
var reg = /^\d{6,}$/;
正则表达式,正则对象提供了一个test方法用于判断验证结果,返回true或者false。
console.info(reg.test(123459));
JSON:
在js里面json表示一个对象,这个对象是非常小的一个。用于存储数据,轻量化对象
var jso = {"username":"xiaowang","pwd":123};
console.info(jso);
console.info(jso.username);
5.2.2内置对象
内置对象 Global ,Math
Global无法直接访问,提供了一些方法和属性。
—有点类似java的静态方法
将所有全局的方法收集在一个对象中。直接访问对象的属性和方法。
var url="http://www.baidu.com?视频.mp4";
console.info(url);
/*中文进行转码,使用的时候在进行解码*/
var newUrl = encodeURI(url);
解码:
var encodeUrl = decodeURI(newUrl);
console.info(encodeUrl);
eval()可以将字符串解析成js代码执行:
var y = "2+3";
console.info(y);
console.info(eval(y));
第一句console代码在控制台的结果是2+3
而第二句代码的结果是5.效果就是这样。
Math,可以直接使用Math内置对象:
console.info(Math.random());
console.info(Math.floor(12.5));
第一个取随机数,java中也有
第二个向下去整,12.
6.数据类型转换
6.1自动转型
任何数据类型与String相加都是字符串
自动转换数据类型,除了加以外,数据操作自动转换。
即除了加法外,其他的减乘除等都会转换为number型进行操作。
如果无法转换,那么结果就是NaN
NaN:表示非数字
各种类型自动转型的结果:
6.2强制转型
1.转换为字符串。
使用toString()函数。
toString()方法是来自于原生对象 原生对象Object,因所有对象都继承自Object,所以所有对象都有toString()方法。另外,由于boolean、number和string这三 个基本类型可看作伪对象,可以看成引用类型
Boolean,Number和String。
注意:null,undefined没有toString()
使用String()函数
String()可以把任何值转换成字符串,这种强制转换和toString()的唯一不同之处在于,对于null和undefined值也能强制转换而不会报错。
2.转换为数字。
java中是Integer.parseInt()
js中则是没有前面的一部分。
parseInt()函数 ,parseFloat()函数
var num = parseInt("12345px");//返回12345
var num1 = parseInt("0xA"); //10
var num2 = parseInt("56.9"); //56
var num3 = parseInt("red"); //NaN
var num4 = parseInt("10", 8); //8
----------------------------------
var fNum1 = parseFloat("12345red"); //返回 12345
var fNum3 = parseFloat("11.2"); //返回 11.2
var fNum5 = parseFloat("0102"); //返回 102
var fNum1 = parseFloat("red"); //返回 NaN
注意:parseInt() 方法首先查看位置 0 处的字符,判断它是否是个有效数字;如果不是,该方法将返回 NaN,不再继续执行其他操作。但如果该字符是有效数 字,该方法将查看位置 1 处的字符,进行同样的测试。这一过程将持续到发现非有效数字的字符为止,此时 parseInt() 将把该字符之前的字符串转换 成数字。
Number()函数
Number() 函数的强制类型转换与 parseInt() 和 parseFloat() 方法的处理方式相似,只是它转换的是整个值,而不是部分值。 还记得吗,parseInt() 和 parseFloat() 方法只转换第一个无效字符之前的字符串,因此 “1.2.3” 将分别被转换为 “1” 和 “1.2”。 用 Number() 进行强制类型转换,”1.2.3” 将返回 NaN,因为整个字符串值不能转换成数字。如果字符串值能被完整地转换,Number() 将判断是调用 parseInt() 方法还是 parseFloat() 方法。
Number(false); //0
Number(true); //1
Number(undefined); //0
Number(null); //0
Number("1.2"); //1.2
Number("12"); //12
Number("1.2.3"); //NaN
Number(new object()); //NaN
Number(false); //0
3.转换为boolean
当要转换的值是至少有一个字符的字符串、非 0 数字或对象时,Boolean() 函数将返回 true。如果该值是空字符串、数字 0、undefined 或 null,它将 返回 false。
var b1 = Boolean(""); //false - 空字符串
var b2 = Boolean("hello"); //true - 非空字符串
var b3 = Boolean(50); //true - 非零数字
var b4 = Boolean(null); //false - null
var b5 = Boolean(0); //false - 零
var b6 = Boolean(new object()); //true - 对象