前端学习第七天——了解javascript变量
输出语句
alert
弹出警告框
alert("Hello world");
浏览器遇到alert
语句时,会暂停程序运行,直到用户点击确定按钮后,程序才会继续执行下去。
console
内置对象,通过“打点”可以调用它的内置log方法。会在控制台输出。不会打断程序的运行。
console.log("Hello world");
变量命名法
方法名 | 举例 |
驼峰命名法 | mathTestScore |
c风格 | mathTestScore |
匈牙利命名法 | iMathTestScore |
不用var定义变量,而直接将值赋予它,虽然部印发报错,但会产生作用域问题
变量声明提升
可以使用一个稍后才声明的变量,而不会发生异常。在执行所有代码前,JS有与解析阶段,会预读所有变量的定义。变量声明提升只提升定义,不提升值
基本数据类型
typeof
运算符可以检测值或者变量的类型
typeof 5; // number
Number(数字)类型
科学计数法 3e8表示30000000。3e-4表示-0.0003。
二进制数值以0b开头 0b10表示2。0b1111表示15。
八进制数值以0开头 017表示15。
十六进制数字以0x开头 0xf表示15.NaN
是英语“not a number”的意思,即“不是一个数”,但它是一个数字类型的值。
0除以0的结果是NaN。
String(字符串)类型
/* 字符串的拼接 */
'abc'+'def' // ="abcdef"
/* 空字符串 */
var str = '';
length
属性表示字符串的长度
方法 | 功能 |
charAt() | 得到指定位置的字符串 |
substring() | 提取子串 |
substr() | 提取子串 |
slice() | 提取子串 |
toUpperCase() | 提取字符串为大写 |
toLowerCase() | 提取字符串为小写 |
indexOf() | 检索字符串 |
- substring() 方法用于提取字符串中介于两个指定下标之间的字符。必需。一个非负的整数。第一个参数可以大于第二个参数。substring会自动交换两个数字位置。
- substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,
- slice() 方法可从已有的数组中返回选定的元素。第一个参数可以是负整数,第一个参数必须小于第二个参数。
- indexOf()方法返回某个指定的字符串值在字符串中首次出现的位置。如果检索的字符串没有出现,则返回-1。
布尔类型
布尔类型的值只有两个true和false。
undefined类型
一个没有被赋值的变量的默认值是undefined,而undefined的类型也是undefined。undefined类型只有undefined一个值
null类型
null表示“空”,它是空对象。当我们需要讲对象销毁、数组销毁或者删除时间监听时,通常把它们设置为null。
数据类型的转换
-
Number()
转为数字。 -
parseInt()
将字符串转为整数。
parseInt('3.14'); // 3 自动去掉非数字字符之后到的所有字符
parseInt('3.14是圆周率'); // 3
parseInt('圆周率是3.14'); // NaN 如果字符串不是数字开头,则转为NaN
parseInt('3.99'); // 3 没有四舍五入
-
parseFloat()
将字符串转为浮点数。 -
String()
将其他值转为字符串。 toStirng()
(6).toString(); // 数字需要加括号,升格成为对象。
Boolean()
其他值转为布尔值
- 0和NaN会转为false,其他数字都转为true
- 空字符串会转为false,其他都转为true
- undefined和null转为false
prompt()
函数弹出输入框。
var a = prompt('请输入第一个数字:');
经典面试题
parseInt('3.6'+'5.1'); // 3
/* '3.65.1' */
Boolean('false'); // true
/* 'false'是字符串 */
0/0 NaN
4/0 Infinity
请说出substring()
、substr()
和slice()
方法的区别
-
substring()
和slice()
都接受a,b两个参数,从a开始到b结束,但不包括b(包头不包尾)。substr()
的第二个参数表示子串的长度。 -
substring()
的两个参数不一定那个大,参数不能是负数,slice()
打的参数必须在后面,第一个参数可以是负数。
'abcde'.slice(3,2); // ''
隐式类型转换
如果参与数学运算的谋操作不是数字型,那么JavaScript会自动将此操作数转为数字类型
3 * '4'; // 12
true + true; //2
3 * '2天'; // NaN
隐式转换的本质是内部调用Number()函数
IEEE754
有些小数的数学运算不是很精准,JavaScript使用了IEEE754二进制浮点数算数标准,这会使一些小数运算产生“丢失精度”的问题
0.1 + 0.2 // 0.30000000000000004
解决办法:在进行小数运算时,要调用数字的toFixed()
方法保留指定小数的位数
幂和开根号
JavaScript中没有提供幂计算、开根号的运算符。需要使用Math
对象的相关方法进行计算。
Math.pow(2,3); // 二的三次幂
Math.sqrt(81); // 根号81
取整
Math.floor()
向下取整,Math.ceil()
向上取整。
相等和全等
相等使用==
进行判断,判断的是两个值是否相等,会进行饮食转换。
全等使用===
进行判断,不仅比较值是否相等,也比较类型是否相等。
undefined == null; // true
undefined === null; // false
ES5规范中规定,undefined == null;的结果为true。
NaN不自等,isNaN()
函数可以用来判断变量值是否为NaN。它的的机理是:只要该变量传入Number()
的执行结果是NaN,isNaN()
函数都会得到true
a++先用再加;++a先加再用
综合运算
运算顺序:
非运算
数学运算
关系运算
逻辑运算
5 < 3 + 3 // 1. 3+3 2. 5<6 true
3 > 2 && 8 > 3+4 // 1. 3+4=7 2. 8>7 true 3. 3>2 true 4. true && true
3 > 2 && 8 > 3+4 // 1. 3+4=7 2. 8>7 false 3. 3>2 true 4. true && flase
!13 <5 -3 // 1. !13=false 3.5-3=2 4. false<2 true
2 && 8 > 3+4 // 1. 3+4=7 2. 8>7 true 3. 3>2 true 4. true && true
3 > 2 && 8 > 3+4 // 1. 3+4=7 2. 8>7 false 3. 3>2 true 4. true && flase
!13 <5 -3 // 1. !13=false 3.5-3=2 4. false<2 true