美文网首页
第三章基本概念

第三章基本概念

作者: 土豪码农 | 来源:发表于2018-10-04 22:46 被阅读0次

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

typeof 操作符

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

  • 'underfined' 属于未定义
  • 'boolean'属于布尔值
  • 'string'是字符串
  • 'number'是数值
  • 'object'是对象
  • 'function'是函数

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

  • 任何涉及NaN的操作都会返回NaN
  • NaN不得能与任何值,包括它本身

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

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

Object类型

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

  • constructor 保存用于创建当前对象的函数,对于前面的例子而言,构造函数就是Object()
  • hasOwnProperty(属性名称)用于检查当前对象实例中是否有该属性,不会检查原型上的属性,属性名称必须是字符串
  • isPrototypeOf(obj)用于检查传入的对象是否是当前对象的原型
  • propertyIsEnumerable(属性名称)检查该属性是否能使用for-in来枚举,属性名也是要字符串类型
  • toLocaleString()返回对象的字符串表示
  • toString()返回对象的字符串表示
  • valueOf()返回对象的字符串,数值或布尔值表示,通常与toString()方法的返回值相同

操作符

区分--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

操作符

  • !!两个感叹号可以模拟boolean()的作用转化成布尔值

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

  • 如果两个都是数值比较数值
  • 如果是字符串,比较两个字符串对呀的字符编码
    *两个字符串相比较就会把字符串转换成对应的字符编码,会出现以下情况
    console.log("23" < '3'); //true
    console.log("B" < "a"); //true
    console.log("b" < "a"); //false
  • 如果有一边是布尔值,会转换成数值进行比较
  • 如果有一边是数值,就会把另一边转换为数值
    这里就有个注意点,如果转换不成正常的数值就会转换成NaN,任何和NaN比较都将会返回false.
    console.log('abc' >= 1); //false
    console.log(1 >= 'abc'); //false

函数

  • 函数规定传入的参数和实际传入的参数并不一定要相同,并且可以通过arguments拿到传入的参数,arguments还有个length知道一共传入了多少个参数
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)

相关文章

  • JavaScript高级程序设计

    第三章 基本概念第四章 变量,作用域第五章 引用类型

  • 三阶-Day 2-量化择债

    2017.11.06 阅读区间:第三章 第三章框架清晰,主要讲什么是债券以及如何量化择债。一起来回顾一些基本概念。...

  • 《JavaScript高级程序设计》之笔记一

    JavaScript正式篇 基于《JavaScript高级程序设计》编写 第三章 基本概念 1. 标识符 : 指变...

  • javascript高级程序设计(第3章)

    第三章:基本概念 本章内容: 语法 数据类型 流程控制语句 函数 3.1 语法 3.1.1 区别大小写 ECMAS...

  • javascripte高三读书笔记

    第三章 基本概念 3.1 语法 区分大小写 严格模式"use strict";这其实是一个编译指示(pragma)...

  • JavaScript高级程序设计(第3版) 笔记

    第三章 基本概念 3.1 语法 3.1.1 区分大小写 3.1.2 标识符 就是指变量、函数、属性的名字,或者函数...

  • 软件项目敏捷管理目录

    第一章 敏捷的基本概念 第二章 Scrum 中的基本角色和职责 第三章 需求解析与管理

  • 第三章基本概念

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

  • 第三章 基本概念

    javascript区分大小写 标识符 第一个字母必须是字母,下划线或美元符号 其他字符可以使字母,下划线,美元,...

  • 第三章 基本概念

    运算符优先级 借鉴班上一个同学的说法袁(一元运算符)术(算术)移位(按位运算符),关系(关系运算符)位(位运算符)...

网友评论

      本文标题:第三章基本概念

      本文链接:https://www.haomeiwen.com/subject/nezxaftx.html