JS基础

作者: 饥人谷_hak | 来源:发表于2017-03-25 10:03 被阅读4次

    JS的运行环境

    • 浏览器
    • node.js

    表达式&语句

    20170325104100.png

    在图中5 % 3中的%是<strong>取模运算符</strong>,图中5除以3得出的结果是余2

    20170325104101.png

    1 + 1是表达式,表达式是有值得,1+1的值是2.把2的值赋值给a,就是赋值语句.
    赋值语句(var a = 1 + 1)它的<strong>本身是没值的</strong>,所以返回了undefined

    20170325104100.png

    前面不用<b>var</b>声明,它就有值. 1 + 1的值就是a

    20170325104100.png

    看看console.log(1)返回的是什么,1是console.log(1)的,<strong>而console.log(1)本身是没有值得,所以返回undefined.</strong>

    变量

    var a  /*用var 就是声明变量,此时a就是一个变量*/
    a = 1
    a = 'stringaaa'  //它的值可以是1,可以是stringaaa,总之可以随便改.既然它的值可以变,所以他就是变量
    
    

    除了var以外还有什么可以声明?

    • let //不可重复声明,
    • const //不可重复声明,<b>在声明的时候必须要赋值,这个值不能修改</b>
    直接声明变量(全局变量)
    a = 1 /*如果你在(非函数内)顶级的作用域,不用var直接声明a,他就是一个 全局变量.
            首先a会去找有没有声明过a,没有声明过就变成global.a  */
    

    <b>如果你声明一个最外层的变量,那么这个变量默认就是global.变量</b>

    变量提升<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    由于JS代码是一行一行的执行

    var  a
    console.log (a)
    a = 1  //此处的var a 会跑到console.log(a)的前面.  
    
    function a(){
    a = 1       
                            //当前作用域的var提升到函数a()里面的顶层,注意!是里面!
                            //若var脱离了function,则销毁var a 
    var a
    }
    

    <b>只要是声明,就会被提前 !变量提升只对var声明的变量有用!</b>
    浏览器分两次解释代码,第一次先读这段代码有多少变量,在执行.

    常量

    x = 2 //可以
    1 = 3 //不行
    <b>所以常量就是赋值不能变的量
    用const可以声明常量
    </b>

    if...else

    var n = 1
    
    if (n === 1) {
        console.log('1111')
    }else if (n === 2) {
        console.log('2222')
    }else {
        console.log('3333')
    }
    

    n等于1的时候console.log('1111')
    n等于2的时候console.log('2222')
    n等于其他值的时候console.log('3333')

    switch

    var b = 4
    
    switch (b) {
        case 1:
        console.log('1111')  //b等于1时,console.log('1111')
        break;
        case 2:
        console.log('2222')  //b等于2时,console.log('2222') 
        break;
        default: 
        console.log('No')     //b不满足以上条件时 console.log('No')  
    }
    

    break表示一个case的结束
    <b>break必须以分号;结尾</b>

    三元运算符 ?:

    console.log(b===1 ? 1 + 1 : 2 + 3)
    

    这是相当于简化版if , b的值是1 , 就会输出2 , 不是则5

    while循环语句

    var a = 1
    
    while (a < 11) {
        console.log(a)
        a = a + 1
    }
    
    console.log('完')
    
    Q20170325140706.png

    当a小于11时 , console.log(a) , 然后a 赋值变成 a + 1 , 直到a不小于11 , console.log('完')

    var a = 1
    var b
     
    while ((b = a) < 11) {
      console.log(b)
      a += 1
    }
    

    把a的值赋值给b , 执行循环

    for循环

    for (var a = 1;a < 11;a++) {
    console.log(a)
    }
    

    在上面的for循环中var a = 1只执行一次,如果while这么写, 那它每次都会执行var a = 1

    do...while

    var a = 1
    do{
    console.log(a)
    a += 1
    }while (a < 11) 
    
    console.log('结束')
    

    它和while的区别就是 , 先做事(先循环一次) , 再判断

    continue和break

    Q20170325140706.png Q20170325140706.png

    continue的意思就是, 马上跳出进入下次循环
    break就是立即跳出循环

    JavaScript属于结构化编程

    1.代码是一行一行的执行
    2.有if...else
    3.有循环

    满足以上三个条件就属于结构化编程

    数据类型&typeof操作符

    typeof用来检测变量的数据类型
    <b> number
    boolean
    null
    undefined
    string
    symbol()</b> /**symbol()是ES6引入的新的字符类型. 以它为值,这个值和谁都不相等,symbol()就是产生一个独一无二的值. **/

    以上 的数据类型属于基础类型, 没有「引用」的概念 . 还有一种复杂类型就是Object

    Q20170325140706.png

    JS 只能表示两个字节的Unicode

    相关文章

      网友评论

          本文标题:JS基础

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