美文网首页
JavaScript基础知识

JavaScript基础知识

作者: 空压机百科 | 来源:发表于2020-02-08 21:07 被阅读0次
    变量(variable):它不是具体的值,只是一个用来存储具体值的容器或者代名词
    JS中创建变量的方式
    • var (ES3)
    • function (ES3) 创建函数(函数名也是变量,只不过存储的值是函数类型而已)
    • let (ES6)
    • const (ES6) 创建的是常量
    • import (ES6) 基于ES6的模板规范导出需要的信息
    • class (ES6) 基于ES6创建类
    let / const 和 var 的区别

    1、let和const不存在变量提升,只有var和function有变量提升
    2、var允许重复声明,let不允许,在相同作用域中(或执行上下文中),使用var和function关键词声明变量并且重复声明,声明一次过后不在重复声明但需要重新赋值。let和const不能重复声明(不管之前是通过什么办法只要在当前栈内存存在这个变量,使用let和const重复声明变量都会报错),重新声明会报错
    a = 12;let a = 13;console.log(a); var a = 12;let a = 13;console.log(a);都会报错
    3、let能解决typeof检测时出现的暂时性死区问题

    变量命名规范
    • 严格区分大小写
    • 遵循驼峰命名法:按照数字、字母、下划线(一般下划线在前面的都是公共变量)或者$(一般存储的都是JQ元素)来命名(数字不能作为名字的开头),命名的时候基于英文单词拼接成一个完整的名字(第一个单词字母小写,其余每一个有意义单词的首字母都大写)。
    • 不能使用关键字和保留字:在JS中有特殊含义的叫做关键字,未来可能成为关键字的叫做保留字
    JS中的数据类型
    • 基本数据类型(值类型)
      数字 number
      字符串 string
      布尔 boolean
      null
      undefined
    • 引用数据类型
      对象 object(普通对象,数组对象,正则对象,日期对象...)
      函数 function
    • ES6中新增加的一个特殊的类型:Symbol,唯一的值
    数据类型剖析

    一、number数字类型
    NaN:not a number 但是它是数字类的
    isNaN:检测当前值是否不是有效数字(数字类型中除了NaN不是有效数字,其余都是有效数字),返回true代表不是有效数字,返回false是有效数字
    isNaN检测机制:
    1、首先验证当前要检测的值是否为数字类型,如果不是浏览器默认把值转换为数字类型
    2、当前检测的值已经是数字类型,是有效数字返回false,不是返回true(number,布尔,null都是有效数字)
    引用数据类型转换为数字:先把引用值调取toString转换为字符串,然后再把字符串调取Number转换为数字
    二、布尔类型只有0,null,NaN,“”,undefined这五个值转换为布尔类型的值是false,其他都是true
    三、null和undefined
        null:空对象指针 声明变量并赋值为null
        undefined:未定义 声明变量不赋值
    四、对象数据类型
    1、普通对象

    1、由大括号包裹起来
    2、由零到多组属性名和属性值(键值对)组成,属性名一般是字符串或者是数字。如果属性名不是字符串或数字,浏览器会把这个值转换为字符串,然后在进行储存
    假删除让当前对象属性值为空:obj["age"] = null // obj.age = null
    彻底删除对象中的属性:delete obj["age"] // delete obj.age

    2、数组对象

    数组对象的属性名是数字(属性名为对象的索引)

    扩展:JS代码如何被运行以及运行后如何输出结果

    如何运行
    1、浏览器加载HTML页面时,首先会提供一个供全局JS代码执行的环境称之为全局作用域全局作用域在后台用global 表示,在js中用 window 表示
    2、代码自上而下执行(之前还有一个变量提升阶段)
    基本数据类型的值会存储在当前的作用域下。
        var a = 12; 首先在作用域中声明一个变量a,然后开辟一个空间存储12,最后让声明的变量和12进行关联,12赋值给a,赋值操作叫做定义。
        基本数据类型是按照值来操作的,把原来的值复制一份放到新的空间或者位置上
    和原来值没有关系
    引用数据类型的值不能直接存储到当前的作用域下,直接开辟一个新的空间并把内容存储进来
        var obj1 = {n: 100},首先开辟一个新的内存空间(为了保证后面可以找到这个空间,此空间由一个16进制的地址),把对象中的键值对依次存储起来,然后声明一个变量,最后让变量和空间地址关联一起,
        引用类型不是按照值来操作,它操作的是空间的引用地址,把原来空间地址赋值给新的变量,但原来的空间没有被克隆,还是一个空间,这样就会出现多个变量关联的是相同的空间,相互之间就会存在影响。
    案例:

    var obj = {n: 10, m: obj.n * 10};
    console.log(obj.m)  //报错,首先开辟一个新的堆内存xxxfff000,把键值对存储到堆内存中n: 10, m: obj.n * 10,此时堆内存信息还没有存储完成obj.n还没有值,空间的地址还有没给obj,obj是undefined,obj.n就是undefined.n所以报错
    

    如何输出结果

    • alert:在浏览器中通过弹窗的方式输出(浏览器提示框),基于alert输出的结果都会转换为字符串,把值(如果是表达式先计算出结果)通过toString这个方法转换为字符串,然后在输出。alert(1+1) => "2",alert一个对象输出结果为"[object Object]"
    • confirm:和alert的用法一致,只不过提示框中有确定和取消两个按钮,所以它也是确认提示框
    • prompt:在confirm的基础上增加输入框,不常用
    • console.log:在浏览器控制台输出日志
    • console.dir:比log输出的更加详细一些(尤其输出对象数据值的时候)
    • console.table:把一个JSON数据按照表格的方式输出
      还有更多console输出方法......

    相关文章

      网友评论

          本文标题:JavaScript基础知识

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