zoukankan      html  css  js  c++  java
  • js基础

    • js是一门轻量级(松散类型)的解释型语言,运行在浏览器上,安全性较低
    • js的组成
      • ECMAScript
      • DOM
      • BOM
    • js的命名规范
      • 严格区分大小写
      • 可以是数字 字母 $ _ 组成名称,但是数字不能为开头
      • 不能用关键字和保留字
      • 推荐使用驼峰命名和匈牙利命名(变量名称)
    • js中的变量可以放任何的数据类型
      • 用来存储值和代表值
      • 创建变量 声明 变量名=值;
        • var name;
        • var name=value;
    • js的数据类型
      • 基本数据类型
        • 数字 number
        • 布尔 boolean
        • 字符串 string
        • null 空 本身保留位置,之后可以添加值
        • undefined 未定义 本应有值,但是未定义值
      • 引用数据类型
        • 对象 object
          • 对象类 Object
          • 数组类 Array
          • 正则类 RegExp
          • 数学算数类 Math
          • 字符串类 String
          • 数字类 Number
        • 函数 function
    • number 数字
      • Number() 将其他数据类型转为数字数据类型,如果传入的值有一个不是数字,返回NaN,否则返回数字
        • 对象--> 数字 对象转为字符串,字符串转为数字
          • {}.toString() --> "[object Object]" --> NaN
          • [].toString() --> "" --> 0
        • 字符串 -- > 数字
        • null -- > 0
        • undefined --> NaN
        • true -- > 1 false --> 0
      • parseFloat(value) 能识别小数,从值的左侧查找到右侧,如果是数字就返回数字,如果遇到非数字停止查找,如果第一个值就不是数字,返回NaN
      • parseInt(value) 识别整数部分,从值的左侧查找到右侧,如果是数字就返回数字的整数部分,如果遇到非数字停止查找,如果第一个值就不是数字,返回NaN
      • isNaN(value) 判断一个值,不是一个数字
        • true 不是数字
        • false 是数字
    • boolean 布尔
      • Boolean(value) 将其他数据类型转为布尔类型(判断一个值是真是假)
        • true
        • false
      • !value 先将value转为布尔类型,然后取反
      • !!value 将其他数据类型转为布尔类型,先将value转为布尔类型,然后取反再取反
      • 0 NaN "" null undefined 为false 其余都为真
        • !{} --> false

    布尔运算不需要将值转为任何数据类型,直接根据五个值为假进行判断

    Boolean([]);
    不应该继续转化
    Boolean('');  ×
    Boolean(0);   ×
    
    • 字符串 string
      • 字符串在js中是用来储存字符的一个变量,用引号将字符包起来,那么包起来的部分无论是代码还是其他,都没有任何意义
    <script>
    	"alert('晓丰嘿嘿嘿')"
    	alert('晓丰呵呵呵')
    </script>
    
    - 引号可以使用双引号也可以使用单引号,如果是嵌套使用,双引号和单引号需要交叉使用
    
    "alert("xxx")" 错误
    "alert('xxx')" 正确
    'alert("xxx")' 正确
    
    • 任何数据类型+字符串 都是字符串拼接
    1+"" -- > "1"
    var str={};
    var str1=str+"abc";// "[object Object]abc"
    
    • Object 对象类
      • 对象类的实例
      • 如何创建一个对象实例
        • 字面量 var obj={}
        • 实例创建 var obj=new Object();
        • 给对象添加键值对(新增属性)
          • obj.newName=newValue;
          • obj["newName"]=newValue;
        • 修改将原有的属性中的属性值进行修改
          • obj.oldName=newValue;
          • obj["oldName"]=newValue;
        • 删除
          • 将键值对完全删除
            • delete obj.oldName
            • delete obj['oldName']
          • 删除属性值,保留属性
            • obj.oldName=null;
            • obj["oldName"]=null;
      • 键值对组成对象,键值对是用来描述这个对象特征的,那么这些键值对有些是天生就有的,我们称之为内置属性,有些是人为定义的,我们称之为自定义属性。

    以数字为属性名的时候,只用通过对象名['属性名']的方式操作,是数字的时候可以省略引号

    js中数据类型的比较 (==)

    两个等号的比较,等号两侧数据类型允许不一致,如果不一致的时候,等号两侧会默认转为同一数据类型再进行比较

    • 对象==对象 永远不相等
    • 对象==字符串 对象转为字符串,字符串和字符串比较
    • 对象==数字 对象转为字符串,字符串转为数字,数字和数字比较
    • 对象==布尔 对象转为字符串,字符串转为数字,布尔转为数字,数字和数字比较
    • 字符串==数字 字符串转为数字,数字和数字比较
    • 字符串==布尔 字符串转为数字,布尔转为数字,数字和数字比较
    • 布尔==数字 布尔转为数字,数字和数字比较
    • null==undefined true
    • null===undefined fasle
    • null或undefined与其他数据类型比较都不相等
    • NaN==NaN 永远不相等

    基本数据类型和引用数据类型的区别

    基本数据类型:如果将一个变量的基本数据类型的值赋值给另一个变量,那么原来变量之后的操作,与另一个变量一点关系都没有,因为基本数据类型会直接将值传递给对方,相当于两个变量存的值一致,但是有两份。复制
    基本数据类型直接操作值
    引用数据类型:

    	var obj1={
            name:'zfpx'
        };
        var obj2=obj1;
        obj1.name="珠峰培训";
        console.log(obj1,obj2);
    
    • 浏览器提供一个全局作用域供这段代码从上到下执行;
    • 遇到obj1,发现其是引用数据类型,浏览器会开辟一个内存空间将obj1中的代码块当做字符串,存储在这个内存空间中,给内存空间一个十六进制的地址,将这个地址返回给obj1,此时obj1=内存地址;
    • 当obj2=obj1时,obj1给obj2的其实是obj1中存储的内容地址,那么obj2也会通过这个地址去查找和obj1一样的内存空间;
    • 无论修改obj1还是修改obj2,其实都是操作的一个地址,所以一个改变,另一个也会跟着改变。

    引用数据类型操作的是一个内存地址。
    D盘中是源文件,将这个源文件增加了几个快捷方式,一个放在桌面上,一个放在C盘中,一个放在E盘中,那么桌面还是c盘还是E盘,其实操作的都是D盘那个原始文件,也就是说文件只有一个,通道有很多

    数据类型的检测

    • typeof value 运算符
      • 检测的返回值是一个字符串,引号中间包着该值的数据类型
      • typeof 运算符不能具体检测object下的数据类型
      • typeof 运算符检测null的时候,返回值为"object"
      • typeof 运算符在一个公式中出现两次或以上,最终值都是"string"
    	typeof 1;// "number"
        typeof null;//"object"
        typeof [];//"object"
        typeof "abc";//"string"
        typeof undefined;//"undefined"
        typeof true;//"boolean"
        typeof {};//"object"
        typeof function () {};//"function"
        typeof /^%/;//"object"
    
    • instanceof 判断已知对象是否属于哪一类
      一个值是否属于这个类的一个实例
     [1,2,3] instanceof Array  // true
    
    • constructor (构造器)
    [1,2,3].constructor === Array  // true
    
    • Object.prototype.toString.call()
    Object.prototype.toString.call([1,2]);//"[object Array]"
    

    判断

    条件运算符(三元运算符/三目运算符)

    基于某些条件对变量进行赋值的条件运算符

    var num=(a>b)?val1:val2;
    // a>b 成立  num=val1
    // a>b 不成立 num=val2
    

    如果一个条件判断完成,有多个语句需要执行的时候,我们需要将这些语句用逗号隔开,并且放在一个括号内

    a>b?(alert("珠峰培训"),console.log("zfpx")):alert("耿大爷");
    

    如果条件成立执行一些语句,如条件不成立就什么也不执行

    a>b?alert('123'):void (0);
    

    三元,三目,条件运算符,默认是给变量赋值的,还可以判断
    一个条件是否成立,

    if语句

    if后面的条件整体判断 要么是真要么是假 也就是说会转换成布尔值

    计算机会将一切复杂运算简单化,所以 数据类型比较的时候,同数据类型比较,不会转化为其他数据类型,判断的时候如果需要布尔值也不会转换

    if

    if(条件){条件成立时执行的语句}

    if else

    if else if else

    switch 基于不同条件来执行不同操作

    switch(条件){
    case 值1
    条件===
    }

    switch判断中如果有一个条件成立,这个条件如果不添加break的话,那么这个成立条件

    循环

    for循环

    运行环境(什么时候用for循环?):for循环适用于已知循环次数
    作用:一遍遍执行相同代码

  • 相关阅读:
    Druid数据库连接池源码分析
    彻底理解Java的Future模式
    CountDownLatch与CyclicBarrier
    Semaphore实现原理分析
    ThreadLocal类分析
    Atomic类和CAS
    synchronized VS Lock, wait-notify VS Condition
    Klass与Oop
    JVM类加载以及执行的实战
    123
  • 原文地址:https://www.cnblogs.com/Jiazexin/p/7080428.html
Copyright © 2011-2022 走看看