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对象的属性和方法

 

 posted on 2019-01-23 10:44  改变一下  阅读(135)  评论(0编辑  收藏  举报