此文仅为笔记,代码来源自网络json
网络技术文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript数组
一、使用||和&&简化语句,其中||:首先检查左边的值,若是能将该值转换为true,则返回左边的值,不执行右边代码,不然返回右边的值;&&:首先检查左边的值,若是能将该值转换为false,则返回左边的值,不执行右边代码;不然返回右边的值,例如:typeof cb == "function" && cb('a'),简化代码好比:if(a==null){a={}=> a||a={}网络
二、Object.defineProperty(obj, prop, descriptor)方法接收三个参数:须要添加或修改属性的对象,属性名称,属性描述options{configurable:false;enumerable:false;value:undefined;writable;get;set}。闭包
三、"use strict":严格模式函数
四、instanceof
运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype
属性,object instanceof constructor
测试
五、声明:var:声明一个变量 const 声明建立一个只读的常量。常量不能够经过赋值改变其值,也不能够在脚本运行时从新声明。它必须被初始化为某个值。这不意味着常量指向的值不可变,而是变量标识符的值只能赋值一次,对象属性是不受保护的,let
声明了一个块级域的局部变量,而且能够给它一个初始化值。this
六、undefined
值在布尔类型环境中会被看成 false,在数值类环境中会被转换为
NaN
null值在布尔类型环境中会被看成 false,在数值类环境中会被转换为0
在涉及加法运算符(+)的数字和字符串表达式中,JavaScript 会把数字值转换为字符串。
字符串转换为数字:使用parseInt()
和parseFloat()或使用单目加法运算(+"1.1")
spa
七、变量的做用域:语句块中var声明的变量将成为语句块所在代码段的局部变量
变量声明提高:你能够引用稍后声明的变量而不会引起异常;可是在使用或引用某个变量以后进行声明和初始化操做,这个被提高的引用仍将获得 undefined 值。
隐式全局变量:无论一个变量有没有用过,JavaScript解释器反向遍历做用域链来查找整个变量的var声明,若是没有找到var,解释器则假定该变量是全局变量,若是该变量用于了赋值操做的话,以前若是不存在的话,解释器则会自动建立它prototype
八、函数表达式:function 函数名称[仅限函数体内有效】(可选)(参数:可选){ 函数体 }(用于=,new,())
表达式定义的函数,称为匿名函数。匿名函数没有函数提高,code
函数声明:function 函数名称 (参数:可选){ 函数体 },不要将函数声明写到语句块中,虽不报错,但有bug
九、在条件表达式中最好不要使用“=”来判断条件是否相等,如if(x=y)应该写为:if((x=y))
False等效值:false(是指布尔值,不是布尔对象),undefined,null,0,NaN,空字符串("")
十、标签语句:lable:statement,
label
的值能够是js的任何非保留字标识符。 用label 标识的语句能够是任何语句。
十一、闭包:当内部函数以某一种方式被任何一个外部函数做用域访问时,一个闭包就产生了,注意闭包中的this
匿名闭包:(function () {}())
匿名函数:将全局变量当成一个参数传入到匿名函数而后使用funtion(x){}(window.x)
十二、this指代
什么彻底取决于函数在何处被调用,而不是在何处被定义。
1三、arguments对象:函数的实际参数会被保存在一个相似数组的arguments对象中,从0开始 arguments.callee:调用自身 不支持严格模式
1四、解构:语法是一个能从数组或对象对应的数组结构或对象字面量里提取数据的 Javascript 表达式。
1五、函数定义:new function(arg1, arg2, ..., argN, function_body):例如将字符串转换为对象:(new Function(“return "+json))()
1六、独立做用域:只能经过函数代码类型的执行上下来建立,变量与执行上下文相关
执行上下文的代码:进入执行上下文(形参,变量声明,函数声明<会覆盖同名变量声明>)、执行代码
1七、后台字符串转json:(new Function('return ' + data.Result))()
1八、checked=checked 不起做用:$("#iszg").prop("checked", true);