JavaScript基本语法和数据类型(上)

JavaScript基本语法

变量
  1. 所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升

    例如:

    console.log(a);
    var a = 1;
    
    // 结果为 undefined
    // 因为提升了变量声明,所以相当于
    var a;
    console.log(a);
    a = 1;
    
区块
  1. 使用大括号,将多个相关的语句组合在一起,称为区块
  2. 区块对于var命令不构成单独的作用域
switch
  1. switch语句后面的表达式,与case语句后面的表示式比较运行结果时,采用的是严格相等运算符(===),而不是相等运算符(==),这意味着比较时不会发生类型转换。
label(标签)
  1. JavaScript 语言允许,语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置,标签的格式如下。

    label:
      语句
    
  2. 标签通常与break语句和continue语句配合使用,跳出特定的循环。

    breakcontinue+ 需要跳转的标签即可
    

数据类型

简介
  1. JavaScript数据类型共有7种(包括ES6的)。
    1. 数值(number):整数和小数(比如13.14
    2. 字符串(string):文本(比如Hello World)。
    3. 布尔值(boolean):表示真伪的两个特殊值,即true(真)和false(假)
    4. undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
    5. null:表示空值,即此处的值为空。
    6. 对象(object):各种值组成的集合。
      1. 狭义的对象(object)
      2. 数组(array)
      3. 函数(function)
    7. Symbol,表示独一无二的值(ES6新增)
typeof运算符
  1. typeof运算符可以返回一个值的数据类型。

  2. 对于null返回object,因为历史遗留问题。

    typeof null;
    // "object"
    
null和undefined
  1. if语句中,它们都会被自动转为false,相等运算符(==)甚至直接报告两者值相等,但是===返回false

    if (!undefined) {
        console.log("true");
    }
    // true
    
    if (!null) {
        console.log("true");
    }
    // true
    
    undefined == null
    // true
    
    undefined === null
    // false
    
  2. 二者几乎差不多,存在的原因还是历史遗留原因。下面是简单例子。

    Number(null)
    // 0
    Number(undefined)
    // NaN
    
  3. 二者理解

    1. null表示空值,即该处的值现在为空。调用函数时,某个参数未设置任何值,这时就可以传入null,表示该参数为空。

    2. undefined表示“未定义”。

      1. 变量未定义

      2. 函数未传入参数

        function a(x) {
        	console.log(x === undefined);
        }
        
        a()
        // true(表示x此时未定义,所以为true)
        // undefined(表示函数为undefined)
        
      3. 调用对象没有赋值的属性

        var p = new Object();
        p.name
        // undefined
        
      4. 函数若无返回值,则返回undefined

        function a() {
        }
        
        a()
        // undefined
        
布尔值
  1. 以下六个值默认被转换为false,其他都为true
    • undefined
    • null
    • false
    • 0
    • NaN
    • ""''(空字符串)
  2. 空数组([])和空对象({})对应的布尔值,都是true

数值

整数与浮点数
  1. JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,11.0是相同的,是同一个数。

    1 == 1.0
    // true
    
  2. 某些运算只有整数才能完成,此时 JavaScript 会自动把64位浮点数,转成32位整数,然后再进行运算。

数值精度
  1. 按照国际标准IEEE 754,JavaScript的数值表示精度和Java的double相同。(1符号 + 11位指数 + 52位小数)
  2. 即-253到$253,简单的法则就是,JavaScript 对15位的十进制数都可以精确处理。
数值范围
  1. 64位浮点数的指数部分的长度是11个二进制位,意味着指数部分的最大值是2047(2的11次方减1)。也就是说,64位浮点数的指数部分的值最大为2047,分出一半表示负数,则 JavaScript 能够表示的数值范围为 2 1024 2^{1024} 21024 2 − 1023 2^{-1023} 21023(开区间),超出这个范围的数无法表示。

  2. JavaScript 提供Number对象的MAX_VALUEMIN_VALUE属性,返回可以表示的具体的最大值和最小值。

    Number.MAX_VALUE
    // 1.7976931348623157e+308
    Number.MIN_VALUE
    // 5e-324
    
数值的表示法和进制
  1. 和传统表示方法一样,使用0b表示二进制,0x表示十六进制,0o或前导0表示八进制,后接eE表示科学计数法,接+-表示正或负次方。
  2. JavaScript 会自动将数值转为科学计数法表示,其他情况都采用字面形式直接表示。
    1. 小数点前的数字多于21位。
    2. 小数点后的零多于5个
特殊数值
  1. 正零和负零

    几乎所有场合,正零和负零都会被当作正常的0

    唯一区别是,+0-0当做分母,返回值不同,一个正整数除以正零得到+Infinity,除以负零得到-Infinity

  2. NaN

    表示“非数字”

    出现场合:

    1. 将字符串解析成数字出错的场合。

      5 - 'a'
      'a' - 5
      // 结果都是NaN
      
      // 但是,+号在字符串中默认为连接,所以下述代码不会出错
      5 + 'a'
      // "5a"
      
      'a' + 5
      // "a5"
      
    2. 一些数学函数,因为错误计算或者不符合规定的运算,其结果会出现NaN

      Math.log(-1) // NaN
      Math.sqrt(-1) // NaN
      0 / 0 // NaN
      

    NaN是属于Number的特殊数值

    typeof NaN // "number"
    

    运算规则

    1. NaN不等于任何值,包括它本身。

      NaN === NaN // false
      NaN == NaN // false
      
      // 无论是使用值相等的'=='还是严格的类型和值都相等'==='来判断,其结果都是false
      
    2. 数组的indexOf方法内部使用的是严格相等运算符,所以该方法对NaN不成立。

      [NaN].indexOf(0)
      // -1
      [1, 2, 3].indexOf(NaN)
      // -1
      
    3. NaN与任何数(包括它自己)的运算,得到的都是NaN

      NaN * 2 // NaN
      NaN + 2 // NaN
      
      // 但是可以与字符串进行+连接哦
      NaN + '123' // "NaN123"
      
  3. Infinity无穷

    用来表示两种场景。一种是一个正的数值太大,或一个负的数值太小,无法表示;另一种是非0数值除以0,得到Infinity

    1. Infinity有正负之分,Infinity表示正的无穷,-Infinity表示负的无穷。

      Infinity === -Infinity // false
      
      1 / -0 // -Infinity
      1 / 0 // Infinity
      
    2. 非0数值除以0,会返回Infinity。非零正数除以-0,会得到-Infinity,负数除以-0,会得到Infinity

    3. 注意:由于数值正向溢出(overflow)、负向溢出(underflow)和被0除,JavaScript 都不报错,所以单纯的数学运算几乎没有可能抛出错误。

    4. Infinity大于一切数值(除了NaN),-Infinity小于一切数值(除了NaN。正负InfinityNaN比较,总是返回false

    5. Infinity的四则运算,符合无穷的数学计算规则。

    6. 0乘以Infinity,返回NaNInfinity减去或除以Infinity,得到NaNInfinitynull计算时,null会转成0,等同于与0的计算。Infinityundefined计算,返回的都是NaN

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园的建设目标是通过数据整合、全面共享,实现校园内教学、科研、管理、服务流程的数字化、信息化、智能化和多媒体化,以提高资源利用率和管理效率,确保校园安全。 智慧校园的建设思路包括构建统一支撑平台、建立完善管理体系、大数据辅助决策和建设校园智慧环境。通过云架构的数据中心与智慧的学习、办公环境,实现日常教学活动、资源建设情况、学业水平情况的全面统计和分析,为决策提供辅助。此外,智慧校园还涵盖了多媒体教学、智慧录播、电子图书馆、VR教室等多种教学模式,以及校园网络、智慧班牌、校园广播等教务管理功能,旨在提升教学品质和管理水平。 智慧校园的详细方案设计进一步细化了教学、教务、安防和运维等多个方面的应用。例如,在智慧教学领域,通过多媒体教学、智慧录播、电子图书馆等技术,实现教学资源的共享和教学模式的创新。在智慧教务方面,校园网络、考场监控、智慧班牌等系统为校园管理提供了便捷和高效。智慧安防系统包括视频监控、一键报警、阳光厨房等,确保校园安全。智慧运维则通过综合管理平台、设备管理、能效管理和资产管理,实现校园设施的智能化管理。 智慧校园的优势和价值体现在个性化互动的智慧教学、协同高效的校园管理、无处不在的校园学习、全面感知的校园环境和轻松便捷的校园生活等方面。通过智慧校园的建设,可以促进教育资源的均衡化,提高教育质量和管理效率,同时保障校园安全和提升师生的学习体验。 总之,智慧校园解决方案通过整合现代信息技术,如云计算、大数据、物联网和人工智能,为教育行业带来了革命性的变革。它不仅提高了教育的质量和效率,还为师生创造了一个更加安全、便捷和富有智慧的学习与生活环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值