zoukankan      html  css  js  c++  java
  • JavaScript总结1

    一、JavaScript变量类型、声明、作用域

    1.1 数字 number

    小数和整数都叫number,以0x或0X开头的表示十六进制。当无穷大时,用Infinity表示(试试 9/0),其他非数字用NaN(not-a-number, 试试 9/’a’);关于NaN,他不等于任何值,包括自己。NaN != NaN 或 NaN !==NaN返回true。需要注意的是,由于小数的精度问题,如果涉及RMB,单位最好用分。

    1.2 字符串 string

    用双引号单引号括起来都可以,字符串有特殊字符可以用 转义字符。有很多功能函数可以用的。

    1.3 布尔值 boolean

    该类型只有两个值 ture/false。在js中,undefined,null,0,-0,NaN,以及空字符串””都等于false。

    1.4 null

    他用来描述一个空值,需要注意:typeof null算出来的结果是object。

    1.5 undefined

    变量的一种取值,表示变量没有初始化,或者对象中没有这个属性,函数没有返回值也返回他。

    null == undefined  //返回ture

    null === undefined //返回false

    1.6 对象 object

    包含了对象 { },数组 [ ],函数 function( ){ },可以用 . 或者 [] 访问其中的属性。

    2 变量声明及作用域

    所有类型变量用var声明,可以一次声明一个或多个。js是函数作用域,不像java,c#是块级作用域。在函数内声明的变量是局部变量,必须用var。否则它会成为全局变量,声明一个全局变量事实是定义了一个window对象的属性(var a  可以理解为window.a),局部变量的优先级高于同名的全局变量。在变量声明中,js有个特性叫做声明提前(hoisting),即无论在哪里声明变量,他都会提前到他所处的作用域的最前端。参考网上一段代码

    if(!("a" in window)){
    	var a =  1;
    }
    alert(a);

    他会弹出undefined,为什么不是1?因为hoisting特性,var a 被提前到最前面声明,作为一个未赋值的全局变量,此时window具备了a属性,”a” in  window 返回true,不会执行a = 1;这段代码等价于

    var a ;
    if(!("a" in window)){
    	a =  1;
    }
    alert(a);

    二、运算符

    常用的一些运算符都是差不多的,比较特殊的是:

    1  =,== 和 ===

    他们的定义有些不同,===叫做严格相等运算符(strict equality),称为恒等,==称为相等,=称为赋值

    ===比较时,首先比较值,并且不进行任何类型转换,满足值相等并且类型相等,则返回true。对于引用值,必须指向同一个对象object才相等。null === undefined 返回false,null == undefined 返回true;

    2 in和instanceof

    in判断 左边的字符串值是不是右边对象的属性

    instanceof判断 左边的对象是不是右边的类

    var test = {
      x : 1
    }
    
    "x" in test //true
    "y" in test //false
    
    var test_Date = new Date();
    
    test_Date instanceof Date;//true
    test_Date instanceof Object;//true
    test_Date instanceof RegExp;//false

    3 && 与 ||

    他们两个不仅仅返回boolean值!

    &&逻辑与 他从左到右一次计算值,只要期间有一个为false,那么再右边的就不会计算了,直接返回false。

    有个特殊的用法称做短路,是为了防止类型错误的一种技巧。

    ||逻辑或 他从左到右一次计算值,只要期间有一个为true,那么再右边的就不会计算了,直接返回true。

    他有种特殊的用法可以为参数提供默认值。

    /*短路的用法
     *防止test为空,从而在取x值的时候产生错误
     */
    var test = {
      x : 1
    }
    var y = test && test.x; //y = 1;
    
    /*提供默认值
     *若data为空,默认设为xxxx
     */
    function test_Fn(data){
      data = data || "xxxx";
      /*
       *其他操作
       */
    }

    分享一张网上找的思维导图:

    view

    三、语句

    常用的循环,条件,跳转,异常处理语句跟java都大同小异。比较特殊的是,对于for-in循环,他循环的是对象的可枚举属性。条件if-else,switch-case。有个小技巧是,当条件是可枚举时,比如1表示周一,2表示周二……这时用数组的方式缓存枚举值,用下标访问,要比条件判断的性能更好。

    对于with,他临时改变的作用域链,最好别用。debugger 用来产生一个断点。

    use strict 是一条指令,他只能出现在脚本代码的开始或者函数体的开始,表示后面的代码按照严格模式执行。关于严格模式和非严格模式的区别参考《JavaScript权威指南》5.8节。

  • 相关阅读:
    MySQL配置文件mysql.ini参数详解、MySQL性能优化
    破解许可
    mysql本地可以访问 网络不能访问
    解决远程连接mysql很慢的方法(mysql_connect 打开连接慢)
    MYSQL数据库如何赋予远程某个IP访问权限
    linux网络编程 no route to host 解决方案
    CentOS添加路由表
    CentOS安装zip unzip命令
    Centos7下的systemctl命令与service和chkconfig
    header头参数不能带下划线
  • 原文地址:https://www.cnblogs.com/lzq1065763582/p/4821636.html
Copyright © 2011-2022 走看看