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

评论