8-25 程宗武
day15(JavaScript)
1、JavaScript的特点:
1)解释型语言
2)弱类型语言
3)基于对象
4)跨平台
JavaScript:解释型语言-编译一行执行一次
如果出现了字符串的嵌套,需要在内外使用不同的引号 例:"你好 'js' ";
2、JavaScript组成
1)ECMAScript:ES规定了JS语言核心语法的标准
2)DOM
document:表示整个文档,在dom树中表示顶级对象,表示整个对象
document.write()这种方法会破坏页面结构,因此,在开发中严禁使用此方法;如果出现了报错,一般会将报错信息输出到控制台中
3)BOM
alert()
弹出输入框
prompt('加油,特种兵');
弹出确认框
confirm('加油,特种兵');
3、变量
//定义变量
var name = "朱朝阳"
//使用变量
console.log(name);
//在命令行窗口输入node 文件名 或者文件路径
//变量的默认值为undefined
常量使用关键字const命名,一旦声明,不允许重新赋值(常量必须在创建的时候就赋值)
例:const:PI = 3.14
4、数据类型
1)基础数据类型:(number、string、boolean、undefined、null)
声明一个二进制整数:0b101010
八进制(0开头):0123
浮点型:e表示10的多少次幂 e的前后都必须有值
例:var num1 = 0.314e1; --> 3.14
var num2 = 31.4e-1; --> 3.14
null:实质上是一个对象,一般由程序给我们赋值,而不是我们主动指定一个变量的值为null
2)引用数据类型:
3)数据类型转换
隐式转换
加法运算
数值型+布尔型==>数值型
例:console.log(1+true) --> 2 console.log(1+false) --> 1
字符串型+布尔型==>字符串型
例:console.log('string'+true) --> stringtrue
减、乘、除、取余运算
自动将数据类型转为数值型,然后再进行运算
console.log('string'/10); -->NaN (一切无法正常转换的数字,NaN不代表任何值,NaN与任何数进行运算,结果都为NaN);
强制转换(所有隐式转换都是自动调用Number())
1、将数据转换为整型
强制转换的机制:将数据转为number类型的整数,从开头开始,依次读取每个字符,只要碰到数字就保留,直到碰到第一个不是数字的字符就不再继续读取
//整型
console.log(parseInt(1.2111));1
console.log(parseInt("str1"));NaN
console.log(parseInt("111aaaa"));111
console.log(parseInt(true));NaN
console.log(parseInt(undefined));NaN
console.log(parseInt(null));NaN
2、将数据转为单精度浮点型
将数据转为number类型的浮点数(小数),从开头开始,依次读取每个字符,只要碰到数字和小数点就保留,直到碰到第一个不是数字和小数点的字符就不再继续读取
//单精度浮点型
console.log(parseFloat(1));1
console.log(parseFloat("123.11aaa"));123.11
console.log(parseFloat("111.11.11"));111.11
console.log(parseFloat(undefined));NaN
console.log(parseFloat(true));NaN
console.log(parseFloat(null));NaN
3、将数值型转成字符串
1)x.toStirng() (注意:x不能是null和undefined)
var a = 1;
console.log(a.toString()); -->1
var b = true;
console.log(b.toString()); -->true
var c = undefined;
console.log(c.toString()); -->TypeError(类型转换异常)
2)String(x)(这种类型对x没有类型限制)
4、将数据转为boolean
规则:只有五个值会被转为false( 0 , null , NaN , undefined , "" ),其余任何值都转为true
//布尔型
console.log(Boolean(0));
console.log(Boolean(null));
console.log(Boolean(NaN));
console.log(Boolean(undefined));
console.log(Boolean(""));
console.log(Boolean(" ")); -->true//双引号里面为空格时,空格也算一个字符
5、运算符和表达式
1、算数运算符
+ 运算中只要有一个字符串,全部转为字符串,+ 计算此时改为字符串拼接
问题:凡是从页面上获得的数据都是字符串
解决:做算数计算前,必须用parseFloat()强转为数字类型
2、比较运算符
== 和 ===的区别(全等于\严格等于)
console.log(1=='1'); true;
console.log(1==='1'); false;
特殊情况
1.两个string类型做比较,不再转为number,而是按位比较每个字符的unicode号,只要一位字符能比较出结果,就不再继续;
2.null和undefined,用 == 无法区分null和undefined,普通关系运算会将undefined先隐式转为null再做比较
console.log(undefined==null);true
解决方法:
===(不带隐式转换的==比较),先要类型相同,然后再值相等
!==(不带隐式转换的!=比较)
3.NaN
无法判断是不是NaN,NaN不等于,不大于,不小于一切,因为NaN表示所有不是数字的内容,是一个范围,不表示一个具体值,做比较无任何意义
解决方法:
isNaN(num),专门判断num是不是NaN,经常反用,专门用来判断num是不是有效的数字,!isNaN(num)
4.两个对象做 == 比较
不再做任何转换,而是比较两个对象的 ” 地址 “ 是否相同,判断两个变量是否引用同一个对象
3、逻辑运算符
1、逻辑与(默认情况:每个条件都转为bool类型,再联合判断)
console.log(1&&2);2
console.log(2&&1);1==>true
评论