JavaScript中数据类型与运算符

JavaScript中数据类型与运算符

注释

和C、Java一样

  • 单行注释//
  • 多行注释/* 注释 */,也可以用在语句中。
str = 'hello' + /* comment */ 'xdd'
console.log(str)

常量和变量

  1. 标识符

    • 标识符必须是字母、下划线、美元符号$和数字,但必须是字母、下划线、美元符号开头,依然是不能数字开头。
    • 标识符区分大小写
  2. 变量的声明

    • var 声明一个变量 var a = 1。注意:var会做声明提升(即,可以先使用变量,后声明)(var会把变量提升到当前全局或函数作用域。)。
    • let 声明一个快作用域中的局部变量 let a = 1
    • const 声明一个常量 const name = '张三' 注意:常量必须声明时就赋值。(因为常量不可修改)
      1. 如果明确知道一个标识符定义后不再修改,应该尽量声明成const常量,减少被修改的风险,减少Bug。
    • 注意:,JS中的变量声明和初始化时可以分开的
    var a; //只声明,a变量,a为undefined
    let b;
    console.log(1,a,b,typeof(a),typeof(b))
    
    a = 1;
    b = "a string";
    console.log(2,a,b,typeof(a),typeof(b))
    
    a = "2345";
    b = 2.45;
    console.log(3,a,b,typeof(a),typeof(b))
    
    // const c //错误,不能这样写
    const c = 100
    // c = c + 1 #不行,const定义的是常量,会报错
    console.log(4,c)
    // c = 200 //不可修改
    

    js_001

  3. let与var的区别

    1. let声明的变量是局部变量,不能突破任何作用域,即任何大括号{}所在的作用域。(注意:可以向内部渗透)
    2. var声明的变量会做声明提升。即如果先使用,后使用var定义,不会报错。系统会自动做声明提升。
      • var声明的变量,可以突破if和for等循环中的大括号{}作用域可以突破。但fun函数等其他的不能。(同样可以向内渗透)
    console.log("- ".repeat(10),"if作用域","- ".repeat(10))
    if(true){
         
        let a = 10;
        var b = 20;
        aa = 30 //只要声明就是全局变量
    }
    // console.log(a) //会出错,找不到变量名
    console.log(b); // 20
    console.log(aa); //30
    
    console.log("- ".repeat(10),"{}作用域","- ".repeat(10))
    {
         
        let c = 30;
        var d = 40;
        cc = 50;
    }
    
    // console.log(c) // 会出错,变量c不存在
    console.log(d) // 40
    console.log(cc)
    
    console.log("- ".repeat(10),"for作用域","- ".repeat(10))
    for(let i=0;i<2;i++){
         
        let f = 10
        var g = 11
        ff = 50
    }
    
    // console.log(f) //会出错,变量f不存在
    console.log(g)  //11
    console.log(ff) //50
    
    console.log("- ".repeat(10),"fun函数中作用域","- ".repeat(10))
    
    function xdd(){
         
        let h = 10
        var j = 12
        hh = 100 //这种声明,会是全局变量,只要函数执行就可访问
    }
    
    xdd()
    // console.log(h) //无法突破函数作用域
    // console.log(j)  //无法突破函数作用域
    console.log(hh) //100
    

    js_020

  4. 变量的声明规范

    var y //只是声明,y值为undefined
    var x = 5 //规范的声明并初始化,声明全局或局部变量
    z = 6 //不规范的初始化,不推荐。在严格模式下会产生异常。在赋值之前不能引用,因为它没有声明。一旦这样赋值就是全局作用域。
    
    function hello()
    {
         
        var a //只是声明,a为undefined,作用域的函数中
        a = 100
    }
    console.log(a) //未声明变量a,异常
    

数据类型

序号 名称 说明 示例
1 number 数值型,包括整形和浮点型 let a = 10
2 boolean 布尔型,true和false let a = true
3 string 字符串 let a = 'abc'
4 null 只有一个值null let a = null
5 undefined 变量声明未赋值的;对象未定义的属性 let a
6 symbol ES6新引入类型
7 object类型 是以上基本类型的复合类型,是容器 let = {a:1,b:2}
不是基本数据类型 Array 数组,用于在单一引用中存储多个值的结构。 let a = [1,2,3,'a','b']
  • ES是动态语言,弱类型语言。
  • 虽然先声明了变量,但是变量可以重新赋值任何类型。
// 类型转换
// 弱类型
console.log("=========string============")
console.log(a = 3 + "xdd",typeof(a)) //3xdd string
console.log(a = null + 'xdd',typeof(a)) //nullxdd string
console.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值