前端学习第七天——了解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()其他值转为布尔值
  1. 0和NaN会转为false,其他数字都转为true
  2. 空字符串会转为false,其他都转为true
  3. 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()方法的区别

  1. substring()slice()都接受a,b两个参数,从a开始到b结束,但不包括b(包头不包尾)。substr()的第二个参数表示子串的长度。
  2. 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