WEB_Day05(JavaScript:数据类型、三大引用类型、输出语句、undefined和null、语句、运算符、弹出框、内置对象)
JavaScript
作用:表单验证、页面特效、动态添加内容
组成:ECMAScript(核心语法)、DOM、BOM
使用方式:
- 行内的js
- 内部js
- 外部js 在html文件的外部 创建一个.js的文件 将js代码放在文件中 在使用时通过
<script src=”外部js的路径” type=”text/javascript/>
定义变量:var 变量名=值
如果要获取当前值的真实类型 可以使用typeof
数据类型: Number、String、Boolean、Null、Undefined、复杂类型
Number : 整型和浮点型、Number()、NaN、parseInt()、parseFloat()
String : 双引号、单引号引起的都是字符串 String()、toString() 拼串 length属性
Boolean : true false
Undefined:
- Undefined 类型只有一个值,即特殊的 undefined 。
- 在使用 var 声明变量但未对其加以初始化时,这个变量的值就是 undefined。
var s;
console.log(s);//undefined
// console.log(a);//is not defined
console.log(typeof s);//undefined
console.log(typeof b);//undefined
注意:对于声明但为初始化的变量或者未声明的变量在使用typeof都返回undefined
Js是一门解释执行的语言,因此一旦其中的一句出错则后续代码将不再执行
Null:
Null 类型是第二个只有一个值的数据类型,这个特殊的值是null 。
- 从语义上看null表示的是一个空的对象。所以使用typeof检查null会返回一个Object。
- undefined值实际上是由null值衍生出来的,所以如果比较undefined和null是否相等,会返回true;
console.log(null == undefined);// 比较值 true
console.log(null === undefined);// 比较的类型和值 false
Object类型:
js中对象是一组属性与方法的集合。这里就要说到引用类型了,引用类型是一种数据结构,用于将数据和功能组织在一起。引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法。
三大引用类型
Object类型:
第一种是使用new操作符后跟Object构造函数,如下所示:
var person = new Object();
person.name = "张三";
person.age = 22;
console.log(person.name + "--" + person.age);//datatype.html:21 张三---22
第二种方式是使用对象字面量表示法,如下所示:
var stu = {
name: "李四",
age: 21
}
console.log(stu.name + "---" + stu.age);//李四---21
Array类型:
数组的每一项可以用来保存任何类型的数据,也就是说,可以用数组的第一个位置来保存字符串,第二个位置保存数值,第三个位置保存对象…另外,数组的大小是可以动态调整的。
var arr = new Array();
arr[0] = "js";
arr[1] = "html";
arr[2] = 10;
arr[3] = true;
arr[4] = null;
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
//静态初始化
var arr1 = ["hello", 100, false, null];
for (var i = 0; i < arr1.length; i++) {
console.log(arr1[i]);
}
Function类型:
定义函数:
function 函数名称(参数列表){
方法体;
如果有返回值 则使用return返回即可;
}
函数的定义及调用:
//函数的定义
function sum(num1, num2) {
var s = num1 + num2;
console.log(s);
}
function sum1(num1, num2) {
var s = num1 + num2;
return s;
}
sum(5, 6);//通过函数名称来调用
var ss = sum1(4, 5);
console.log(ss);
<input type="button" value="求和" onclick="sum(2,3)">
var sum2 = function (n1, n2) {
return n1 + n2;
}
var sss = sum2(8, 9);
console.log(sss);
Js中的值传递和引用传递:
题目1: var a = 100;
var b = a;
a = 200;
console.log (b);//100
题目2: var a = {age : 20};
var b = a;
b.age = 21;
console.log (a.age);//21
输出语句:
Console.log()将内容输出到浏览器控制台
Alert()将内容作为警告框的内容弹出
Document.write()将内容写出到页面的body
区分 undefined 和 null :
null表示"没有对象",即该处不应该有值。典型用法是:
- 作为函数的参数,表示该函数的参数不是对象。
- 作为对象原型链的终点。
undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:
- 变量被声明了,但没有赋值时,就等于undefined。
- 调用函数时,应该提供的参数没有提供,该参数等于undefined。
- 对象没有赋值的属性,该属性的值为undefined。
- 函数没有返回值时,默认返回undefined。
语句
Java中的语句: 判断语句 if switch 循环语句:for while do…while js中的语句: 判断语句 if switch 循环语句:for while do…while 判断语句中,条件如果直接写=号,那就是赋值操作。 Switch语句和java中的一样。 注意switch所支持的数据类型。js支持所有 For循环也和java中的一样,但是要注意定义变量时使用var,不要写成java的int。
使用for循环在页面上输出一个九九乘法表
<script type="text/javascript">
function chegnfabiao() {
for (var i = 1; i < 10; i++) {
for (var j = 1; j <= i; j++) {
document.write(j + " * " + i + "=" + j * i + " ");
}
document.write("<br/>");
}
}
chegnfabiao();
</script>
运算符
关系运算符: 小于( <) 、大于( >) 、小于等于( <=)和大于等于( >=)
Javascript中小数和整数都是数字类型,所以除法中没有整数,会出现小数。 var j= 123; alert(j/1000*1000); 字符串与数字相加,是字符串链接,如果相减,字符串直接转换成数字再相减。
Boolean类型可以进行运算,false就是0或者null,非0非空是true,默认用1显示。 ++ – 等和java中一样。
var a = true;
var b = 10;
document.write(a + b);
document.write("<br/>");
var c = "aa";
var d = 10;
document.write(c + d);//aa10
document.write(c - d);//NaN
document.write("<br/>");
var x = "10";
var y = 1;
document.write("<br/>");
document.write(x - y);//9
var m = 123;
var n = 100;
document.write("<br/>");
document.write(m / n);//1.23
== 和 ===的区别
var t = 11;
var p = "11";
document.write("<br/>");
document.write(t == p);// 比较内容是否相同
document.write("<br/>");
document.write(t === p);// 先比较类型 如果类型不同 则直接返回false 如果类型相同 在比较内容
双等号==:
- 如果两个值类型相同,再进行三个等号(===)的比较
- 如果两个值类型不同,也有可能相等,需根据以下规则进行类型转换在比较:
- 如果一个是null,一个是undefined,那么相等
- 如果一个是字符串,一个是数值,把字符串转换成数值之后再进行比较
三等号===:
- 如果类型不同,就一定不相等
- 如果两个都是数值,并且是同一个值,那么相等;如果其中至少一个是NaN,那么不相等。(判断一个值是否是NaN,只能使用isNaN( ) 来判断)
- 如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等。
- 如果两个值都是true,或是false,那么相等
- 如果两个值都引用同一个对象或是函数,那么相等,否则不相等
- 如果两个值都是null,或是undefined,那么相等
条件运算符
- 条件运算符也称为三元运算符。通常运算符写为?:。
- 这个运算符需要三个操作数,第一个操作数在?之前,第二个操作数在?和:之间,第三个操作数在:之后。 例如: x > 0 ? x : -x // 求x的绝对
弹出框
<script type="text/javascript">
//警告框
alert("这是一条警告信息");
// 确认框 该确认框会有确定和取消按钮 当点击确定按钮 返回true 点击取消 返回false
var c = confirm("你确定要删除该数据吗?");
alert(c);
//提问框 可以让用户输入内容 返回值为用户输入的值
var p = prompt("请输入您的考试成绩");
console.log(p);
</script>
内置对象
顶层函数:
eval("var x = 3;var y = 5; alert(x +5)");
eval("document.write(1 + 6)");
方法:
- isNaN() 检查某个值是否是数字。
- parseInt() 解析一个字符串并返回一个整数。
- parseInt(string, radix)
- radix 可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN
- parseFloat() 解析一个字符串并返回一个浮点数。
- toString() 把对象的值转换为字符串。
常见内置对象:
- String
- Number
- Array
- Math
- Date
(1)Math对象属性:Math对象的属性表示只读的数学常数
Math.E:常数e。 // 2.718281828459045
Math.LN2:2的自然对数。// 0.6931471805599453
Math.LN10:10的自然对数。// 2.302585092994046
Math.LOG2E:以2为底的e的对数。// 1.4426950408889634
Math.LOG10E:以10为底的e的对数。// 0.4342944819032518
Math.PI:常数Pi。// 3.141592653589793
Math.SQRT1_2:0.5的平方根。// 0.7071067811865476
Math.SQRT2:2的平方根。// 1.4142135623730951
2)Math对象的方法
【Math.round()方法】:四舍五入
当参数为正数时,正常的四舍五入标准。(小于0.5取0,大于等于0.5取1)
当参数为负数时,向下取整标准。(小于等于-0.5取-0,-大于0.5取-1)
Math.round(0.1) // 0
Math.round(0.5) // 1
Math.round(-1.1) // -1
Math.round(-1.6) // -2
【Math.floor()方法】:返回小于参数值的最大整数。(向下取整)
Math.floor(3.9) // 3
Math.floor(-3.2) // -4
【Math.ceil()方法】:返回大于参数值的最小整数。(向上取整)
Math.ceil(3.2) // 4
Math.ceil(-3.9) // -3
Math. random()方法】:返回0到1之间的一个伪随机数。可能等于0,但是一定小于1。
Math.random() // 0.7151307314634323
查看下列代码,并说明下列两个函数的作用:
function getRandomNumber(min, max) {
return Math.random() * (max - min) + min;
}
function getRandomIntNumber(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
//生成一个10--22之间的随机数
document.write(parseInt(Math.random() * 12 + 10));
生成一个随机点名器:
var names = ["张三", "李四", "王五"];
var index = parseInt(Math.random() * 3);
document.write(index + "-----" + names[index]);
Date:
Date对象是JavaScript提供的日期和时间的操作接口。
在JavaScript内部,所有日期和时间都储存为一个整数。
这个整数是当前时间距离1970年1月1日00:00:00的毫秒数,正负的范围为基准时间前后各1亿天
同Math对象一样,javascript也为Date对象提供了很多内置的方法。
(1)Date()函数
Date函数可以被Date对象可以直接调用,返回一个当前日期和时间的字符串。
Date(); //"Fri Nov 7 2014 14:52:00 GMT+0800 (中国标准时间)"
Date(2000,1, 1); //"Fri Nov 7 2014 14:52:00 GMT+0800 (中国标准时间)"
// 无论有没有参数,直接调用Date总是返回当前时间
(2)Date(日期字符串|日期参数)构造函数
Date对象是一个构造函数,对它使用new命令,会返回一个Date对象的实例。
【如果不加参数,生成的就是代表当前时间的对象。】
语法:var date1 = new Date();
var today = new Date();
// "Fri Nov 7 2014 14:52:00 GMT+0800 (中国标准时间)"
【如果添加一个日期字符串作为参数,返回字符串所对应的时间。】
语法:var date2 = new Date("January 6, 2013");
// Sun Jan 06 2013 00:00:00 GMT+0800 (中国标准时间)
document.write(new Date(2020, 10, 10));
标准时间的字符串表示:
一些其他合法的日期字符串写法
new Date(datestring)
new Date("2013-2-15")
new Date('2013/2/15')
new Date("2013-FEB-15")
new Date("FEB, 15, 2013")
new Date("FEB 15, 2013")
new Date("Feberuary, 15, 2013")
new Date("Feberuary 15, 2013")
new Date("15, Feberuary, 2013")
Sun Jan 06 2013 00:00:00 GMT+0800 (中国标准时间)
(3)日期运算
之前提到过,javascript内部存储日期类型的时候等于距离1970年1月1日零点的毫秒数。而显示给用户的时候是转换为字符串显示的。因此:
两个日期对象进行减法运算,返回的就是它们间隔的毫秒数。
两个日期对象进行加法运算,返回的就是连接后的两个字符串。
var d1 = new Date(2000, 2, 1);
var d2 = new Date(2000, 3, 1);
console.log(d2-d1);//2678400000
console.log(d2+d1);//Sat Apr 01 2000 00:00:00 GMT+0800 (中国标准时间)Wed Mar 01 2000 00:00:00 GMT+0800 (中国标准时间)
(4)日期对象的get*系列方法
getTime():返回实例对象距离1970年1月1日00:00:00对应的毫秒数,等同于valueOf方法。
getDate():返回实例对象对应每个月的几号(从1开始)。
getDay():返回星期几,星期日为0,星期一为1,以此类推。
getYear():返回距离1900的年数。
getFullYear():返回四位的年份。
getMonth():返回月份(0表示1月,11表示12月)。
getHours():返回小时(0-23)。
getMilliseconds():返回毫秒(0-999)。
getMinutes():返回分钟(0-59)。
getSeconds():返回秒(0-59)。
进行日期的格式化:
var d = new Date();
document.write("<br/>")
document.write(d.getFullYear() + "-" + d.getMonth() + 1 + "-" + d.getDate() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds());