• js查漏补缺


    js中:

      1.对空(Null)、未定义(Undefined)、Symbol 、函数(Function) 都是数据类型(js不像java中,声明了变量会有默认值,在js中只声明变量而没有赋值的时候,类型就是Undefined类型,并不会有默认值。js中NUll和Undefined也是不一样的)

      2.js语言是大小写敏感的语言

      3.js拥有动态类型,即var 声明了一个变量后可以赋值各种不同的数据类型的值

      4.js对象是键值对的容器。和java对象一样拥有属性和方法,不过方法的定义 是作为一个函数定义存储在对象属性中,最终表现为键值对的形式(methodName : function() { code lines });调用方法时,不加()以字符串方式原样输出,加了()才是以函数运算结果的方式输出

      5.js可以直接向未声明的变量赋值,该变量将被自动作为 window 的一个属性,是全局对象的可配置属性,可以删除

      6.变量作用域问题:

        如果变量在函数内没有声明(没有使用 var 关键字),该变量为全局变量。(同5)函数参数只在函数内起作用,是局部变量。在每个代码块(不是function的方法体中)中 JavaScript 不会创建一个新的作用域,一般各个代码块的作用域都是全局的。

        总结起来就是:在 ES6 之前,JavaScript 只有两种作用域: 全局变量 与 函数内的局部变量。并没有像java那样的块级作用域的概念的。且变量是可以重置的(重复声明赋值)

        es6之后新增let关键字 :let 声明的变量只在 let 命令所在的代码块内有效,且同一个作用域里,不能重置变量,不会被变量提升,需要先申明再使用(这个和java是很像的了)

        

      7.函数function的返回值是可选的,且不用向java那样声明返回值得类型

      8.js中的字符串既可以用双引号也可以用单引号,且可以直接利用索引位置来访问字符串中的每个字符。(不要创建 String 对象。它会拖慢执行速度,并可能产生其他副作用)

      9.==表示值相等。===表示绝对等于,值和类型都相等;

      10.!= 表示不等于。!==表示不绝对等于,只要值和类型有一个不相等或者都不相等都返回true

      11.for/in 语句循环遍历对象的属性,for (x in person) // x 为属性名,只能用person[x]取值方式取值,而不能用person.x因为x是变量

      12.null和undefined的值相等,但是类型不想等;null==undefined 返回true,null===undefined 返回false

      13.js中使用typeof 操作符来检测变量的数据类型。

      14.注意:

        NaN 的数据类型是 number

        数组(Array)的数据类型是 object

        日期(Date)的数据类型为 object

        null 的数据类型是 object

        未定义变量的数据类型为 undefined

        function 的数据类型是 function 

      15.js中类型转换使用全局方法:Number() 转换为数字, String() 转换为字符串, Boolean() 转化为布尔值。js中存在自动类型转换,这会导致输出的不是期望的值

      16.js变量提升:

          变量提升:函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部,但是初始化的不会。所以变量可以在使用后声明,也就是变量可以先使用再声明。

      17.switch 语句会使用恒等计算符(===)进行比较:

      18.在 s中,分号是可选的 ,JavaScript 默认是在代码的最后一行自动结束。

      19.js不支持使用名字来索引数组,只允许使用数字索引。

      20. js 中 this 不是固定不变的,它会随着执行环境的改变而改变:

                      在对象的方法中,this 表示该方法所属的对象。
                      如果单独使用,this 表示全局对象。
                      在函数function中,this 表示全局对象。
                      在函数function中,在严格模式下,this 是未定义的(undefined)。
                      在事件中,this 表示接收事件的元素。
                      类似 call() 和 apply() 方法可以将 this 引用到任何对象。

      21.JSON 是用于存储和传输数据的格式。JSON 格式在语法上与创建 JavaScript 对象代码是相同的(都是键值对的集合);JSON 使用 JavaScript 语法,但是 JSON 格式仅仅是一个文本;
    文本可以被任何编程语言读取及作为数据格式传递。

      22.void 是 JavaScript 中非常重要的关键字,该操作符指定要计算一个表达式但是不返回值

      -----------------------------------------------------函数部分---------------------------------------------------------------------

      23.函数表达式可以存储在变量中,在函数表达式存储在变量后,变量也可作为一个函数使用; 

      24.函数同样可以通过内置的 JavaScript 函数构造器(Function())定义 ,但是一般js中应该避免使用new的方式创建对象

      25.函数也可以提升,即先使用后声明,但是使用表达式定义函数时无法提升。

      26.函数可以自调用,(函数表达式)();

      27.函数是一个对象,有自己内部的参数和方法

      28.新增箭头函数(函数无非就是参数,函数体和返回值。抓住这三点很好理解)

      29.JavaScript 函数定义显式参数时没有指定数据类型

      30.ES5 中如果函数在调用时未提供隐式参数,参数会默认设置为: undefined

      31.JavaScript 函数有个内置的对象 arguments 对象,argument 对象包含了函数调用的参数数组。

      32.值传递和引用传递和java是一样的

      33.js闭包我理解不了

      34.事件传播机制:

        在 冒泡 中,内部元素的事件会先被触发,然后再触发外部元素

        在 捕获 中,外部元素的事件会先被触发,然后才会触发内部元素的事件

      35.区分开DOM对象和BOM对象(浏览器对象模型 (BOM) 使 JavaScript 有能力与浏览器"对话"。)

    ---------------------------------------------对象---------------------------------------

      36.JavaScript 类

        JavaScript 是面向对象的语言,但 JavaScript 不使用类。

        在 JavaScript 中,不会创建类,也不会通过类来创建对象(就像在其他面向对象的语言中那样)。

        JavaScript 基于 prototype,而不是基于类的。

      37.js中数组元素是对象,所有可以存放很多类型。这个和java是不一样的

      38.原型prototype是JavaScript全局构造函数。它可以构建新Javascript对象的属性和方法

     

  • 相关阅读:
    linux下mysql定时备份数据库
    怎么不让别人ping服务器
    忘记了本地mysql密码应该怎么找回
    配置 centos apache 的日志文件为每天保存,在home分区
    Android 开发环境安装配置手册
    jquery定时器
    谷歌浏览器控制台出现 Unchecked runtime.lastError: The message port closed before a response was received. 的报错
    百度文库下载文档没有下载劵解决
    JRebel安装部署,激活
    用Cygwin实现在window环境下使用Linux命令-nohup 来后台运行程序
  • 原文地址:https://www.cnblogs.com/wanjn/p/10307614.html
Copyright © 2020-2023  润新知