01语法

作者: 我_巨可爱 | 来源:发表于2017-11-10 16:22 被阅读0次

    基本类型

    1. 变量二次声明无意义,除非在第二次声明的时候,也赋值
    2. 有一些保留字
    • javascript保留字
    • 使用保留字报错类型:Uncaught SyntaxError: Unexpected token finally
    1. while只有一条语句的时候可省略大括号
    2. 循环标签使用方式
    • 在需要跳出的for循环层添加label
    • continuebreak后添加同名label

    数据类型

    1. String,Number,Boolean,Undefined,Null,Object
    2. 使用typeof后有string,number,boolean,undefined,object,function
    • 注意和数据类型相比,少了null多了function
    • 结果都是小写
    1. undefinednull使用==相等。计算时,undefinedNaNnull是0
    2. 返回布尔值的地方
    • 关系运算符
    • &&,||,!
    1. 转化为false的情况
    • '',0,NaN,undefined,null,false
    1. if后需要布尔类型,[]{}其实是true

    数值

    1. Number.MAX_VALUENumber.MIN_VALUE
    2. 科学记数法
    • 当小数点前有21位,还是正常显示。有22位,开始科学计数
    • 当小数点后有5位0,正常显示。有6位0,开始科学计数
    1. 各进制前缀,0x十六,0o八,0b
    2. NaN和isNaN()
    3. Infinity和isInfinity()
    4. parseInt()第二个参数说明了数据是什么进制。同时,只能转化为十进制

    字符串

    1. 长字符换行,每行后用\
    2. 转义字符
    • 可有转移符号\n,\r,\t,\\
    • 可有转移字符,都对应unicode码点
      • \HHH三位八进制
      • \xHH两位十六进制
      • \uHHHH四位十六进制
    1. bitByteKBMBGBTB
    • 存储单位和网速的单位,不管是 B 还是 b,代表的都是 字节 Byte。
    • 带宽的单位,不管是 B 还是 b,代表的都是 比特 bit 。
    1. Base64是最常见的用于传输(8Bit)字节码的编码方式
    2. ASCII 是针对英文字符编码的方式
    3. Unicode 是针对多种语言进行编码的方式
    • 为了解决Unicode编码在互联网上传播的问题,各种规范出现utf-8,代表每次8个位传输数据
    1. GBK本来扩展自ASCII,后渐渐形成GBK。因为还有很多少数名族的语言

    对象

    1. 创建对象
    • {}
    • new Object
    • Object.create(prototype),这种可以利用原型创造一个新的对象,经常用在继承
    1. 对象引用
    • 两个变量对引用同一个对象,则共用
    • 其中一个取消对对象的引用,不会影响另外一个
    var a = {}
    var b = a
    a = 1
    console.log(b)  // {}
    
    1. 检测全局变量,使用a in window方式,如果直接使用if(a)在没有a的情况下会报错
    2. delete成功删除之后返回true,不能删除继承的属性
    3. in用于检测对象是否含有某个属性,也就是键名
    4. for in遍历对象和继承的可遍历属性,跳过不可枚举属性
    5. 关于属性的两个方法
    • Object.defineProperty(obj,propName,{})
    • obj.hasOwnProperty()

    数组

    1. 其实arr[0]等同与arr['0']arr[0.00]
    2. 类数组对象
    • arguments
    • 元素集合
    • 字符串
    1. 类数组转化成数组
    • Array.property.slice.call(arrayLike)
    1. 数组也能使用in,会将索引和属性遍历出来
    2. 数组空位计算在内,但是空位和undefined是不一样的。使用数组的forEach方法、for...in结构、以及Object.keys方法进行遍历,空位都会被跳过

    函数

    1. 不会重载,后边的会覆盖前边的同名函数
    2. if语句块中只能使用函数表达式,不能使用函数定义
    3. fn.name属性返回紧跟在function关键字之后的那个函数名
    4. fn.name返回定义时参数个数
    5. fn.toString()返回函数的源码
    6. 函数的作用域是定义时所在的作用域,和运行时作用域无关
    var a = 1;
    var x = function () {
      console.log(a);
    };
    function f() {
      var a = 2;
      x();
    }
    
    f() // 1
    
    1. 当函数传入对象作为参数的时候
    • 如果修改对象某个属性,将对外部存在影响
    • 如果是替换掉整个参数,不会影响到外部
    1. 同名参数,取后出现的值。即使只传入第一个,但是也会取后者undefined
    2. arguments.callee返回函数本身
    3. 闭包作用
    • 读取函数内部的变量
    • 让变量始终保存在内存中,保存上次运行的状态
    1. 函数的立即调用有两种写法
    2. eval在严格模式下,声明变量不能影响外部变量。但是赋值语句等还是可以改变外部变量值

    运算符

    1. 字符串的比较是按照字典的顺序,靠后的大
    // 严重注意,字符串形式的数值比较
    '2' > '11'  // true
    [2] > [11] // true,因为会转换成 '2' > '11'
    
    1. 对象参与比较,会调用obj.valueOf().toString()
    2. 进制不同,但是转化为10进制相同,就全等
    3. 严格相等运算符比较的是地址,而大于或小于运算符比较的是值。
    {} === {} // false
    [] === [] // false
    
    1. 原始数据类型有string,number,boolean。它们混合比较的时候,会转换成数值类型再进行比较
    'true' == true //false 
    // 第一步 Number('true') ---> NaN
    // 第二部 Number(true) ---> 1
    // NaN == 1 ---> 结果为false
    
    1. 对象与原始类型值比较,对象转化成原始类型的值,再进行比较。
    [1] == 1 // true
    [1] == '1' // true
    [1] == true // true
    
    1. 逻辑运算符和位运算符,位运算符可以用来扩大或缩小2的n次方
    2. void用来防止页面跳转
    3. 赋值运算符和三元运算符,是从右到左的

    数据类型转换

    1. 主要是String,Boolean,Number之间的转换

    错误处理机制

    1. Error的namestack属性存在兼容问题,后者可以显示错误首先是在哪里抛出的
    2. 错误类型和出现原因
    • synaxError 语法错误
    • referenceError 引用错误
      • 调用不存在的值
      • 不允许赋值
    • typeError 类型错误
      • 由 new 引起,不能对基本类型使用 new
    • URIError url参数不正确的时引起
      • 主要由编码的几种方法引起
    • evalError 使用错误
    • rangeError
    1. catch中的return语句会延迟到finally中执行

    编程风格

    1. 关于()和空格的问题
    • 定义非匿名函数和调用函数,函数名和()不能有空格
    • 其他情况,都有一个空格
    1. 全局变量可以使用大写区分
    2. 建议不要将目的不同的语句合并成一行、

    相关文章

      网友评论

          本文标题:01语法

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