第三章基本概念

2018-10-04  本文已影响0人  土豪码农

变量使用前都要申明,虽然不申明也会默认变为全局变量,但是这样做法是不对的,会造成很多误会.所以每个变量使用前都最后申明,要注意变量申明的提升带来的一些问题.

typeof 操作符

因为js里面的数据类型是松散的,所以需要typeof去鉴别数据类型,一共有6种结果

underfined

一般来说,申明一个变量然后不赋值就是underfined,如果申明都没啥申明的打印出来就会报错,例如is not defined,和underfined还是有区别的

注意:即便未初始化的变量会自动被赋予 undefined 值,但显式地初始化变量依然是明智的选择。如果能做到这一点,那么当typeof操作符返回underfined值时就知道变量还没有被申明

null

typeof对null会返回"object"类型,这可以说是历史上的一个失误,但是null表示一个空指针对象,似乎为'object'类型也是说的通的
undefined == null是成立的

Boolean

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符 '空字符串'
Number 任何非0(包括无穷大) 0和NaN
Object 任何对象 null
Underfined underfined

number

NaN,任何数值除以非数值会返回NaN,任何涉及NaN

0除以0才会等于NaN,判断是否是NaN可以用isNaN函数

数值转换多数用parseInt,在阿里的代码规范里面规定,用parseInt最好都填上第二个参数,第二个参数填的是要转换的数值的基数(就是使用多少进制转换).一般填入10.

Object类型

Object的每个实例都具有下列属性和方法

操作符

区分--num和num--的区别
--num是先减再赋值,num--是赋值再--

    let num = 1;
    let num2 = 1;
    let num3 = 1;
    let num4 = 1;
    console.log(num-- + 1); // 2
    console.log(num2--); //1
    console.log(--num3 + 1);//1
    console.log(--num4);//0

操作符

关系操作符有几个要注意的">"."<",">=","<="

    console.log("23" < '3'); //true
    console.log("B" < "a"); //true
    console.log("b" < "a"); //false
    console.log('abc' >= 1); //false
    console.log(1 >= 'abc'); //false

函数

function fn(a, b) {
    console.log(a); // 1
    console.log(b); // 2
    console.log(arguments[0]); //1
    console.log(arguments[1]); //2
    console.log(arguments[2]); //3
    console.log(arguments.length); //3
}
fn(1, 2, 3)

"还有一个有趣的现象是arguments的值和传入的值保持一致"
例如

function fn(a, b) {
    arguments[1] = 1;
    console.log(a + b); //2
    console.log(b); //1
}
fn(1, 2)

但是如果参数没有传入,然后用arguments去改变并不会奏效,没有传入的参数还是undefined的,严格模式中不能使用
例如:

function fn(a, b) {
    arguments[1] = 1;
    console.log(a + b); //NaN
    console.log(b); //undefined
}
fn(1)

上一篇 下一篇

猜你喜欢

热点阅读