2、数据类型和变量

数据类型

  • 语法结构
  • 数据类型
  • 变量

一、语法结构

1.1、字符集

​ JavaScript程序使用Unicode字符集编写的。,Unicode是ASCII和Latin-1的超集,几乎支持地球上所有在用的语言。ECMAScript 3要求JavaScript的实现必须支持Unicode 2.1及后续版本,ECMAScript 5则要求支持Unicode 3及后续版本。

​ HTML(不包括XHTL)中的标签可以不区分大小写,浏览器都可以正常解析。但JavaScript和Java都是严格区分大小写的,像name和Name是两个变量,while是关键字,而While却不是。

1.2、注释

  • 单行注释

    //这是单行注释
    
  • 多行注释

    /*这是多行注释*/
    

1.3、标识符

​ 标识符就是用来命名变量和函数的字符串。JavaScript中允许的标识符为:字母、数字、下划线、美元符号,但不能以数字开头。至于JavaScript中的保留字我这里也懒得列举了,反正在各种编译器中保留字(关键字)都会变色。

二、数据类型

2.1、原始数据类型

  1. number:数字。整数、小数、NaN,NaN表示不是数字的数字。
  2. string:字符串。单引、双引都可以
  3. boolean:true、false
  4. null:空对象
  5. undefind:未定义,即声明了但没有赋值的变量
var number1 = 11;
var str1 = "qwer";
var boolean = true;
var test1 = null;
var test2;//声明未赋值的变量,统一自带默认值:undefind
console.log(number1+"--"+typeof(number1));//11--number
console.log(str1+"--"+typeof(str1));//qwer--string
console.log(boolean+"--"+typeof(boolean));//true--boolean
console.log(test1+"--"+typeof(test1));//null--object
console.log(test2+"--"+typeof(test2));//undefind--undefind

typeof(变量名):用于返回该变量的数据类型

1.2、引用数据类型

  • Object
  • Function
  • 8个基本对象

三、变量

3.1、定义

​ 一块存储数据的内存空间。

3.2、使用

var num1 = 1;
let num2 = 2//ECMAScript 6 开始可用

3.3、变量同名问题

​ 在JS中变量是可以同名的,但是后面的变量会覆盖前面的变量,因为它底层是通过修改内存指向来实现的。如果在函数中声明了一个与函数外同名的变量,则不会覆盖而是创建一个新的局部变量,在使用上遵循就近原则。

var num1= 9;
var num1 = 10;//对于基本变量直接修改数值,对于引用变量则修改内存指向。
console.log(num1);//10
f1();//11
console.log(num1);//10
function f1() {
    var num1 = 11;
    console.log(num1);
}

3.4、声明遗漏和声明提前

​ 声明遗漏:在程序中如果直接去使用一个未曾声明的变量,JS会直接报错。
​ 声明提前:在同一个作用域中,任何地方的变量声明(不包括赋值)都会被最先加载。这意味着你可以先使用变量再进行声明。

var num1 = 10;
console.log(num1);//10
console.log(num2);//undefined,因为声明提前了但是赋值没有提前
var num2 = 11;
f1();//undefined,因为声明提前了但是赋值没有提前
console.log(num4);//变量没有被声明,JS直接报错:num4 is not defined
function f1() {
    console.log(num3);
    var num3 = 12;
}

3.5、var和let的区别

  1. 通过var声明的变量属于window对象,可以用window点出来(window.onload()里面不行),自然也可以跨域使用。用var声明同名的变量会覆盖前面声明的同名变量。在函数中用var声明的变量仍然不能拿到函数体外使用,但是如果不用var声明则可以,比如:b=11,b可以在外面使用,前提是该函数已经被加载。
  2. 通过let声明的变量不属于window对象,可以当作Java中的局部变量来对待,出生自带一个作用域,出了作用域就会被释放掉。如果在相同作用域中声明同名的变量,直接报错。
window.onload=function (ev) {
    var num1 = 11;
    {
        console.log(num1);//11
        var num1 = 12;//覆盖前面的变量
    }
    console.log(num1);//12
    
    let num2 = 11;
    {
        //console.log(num2);这地方是个坑,涉及的东西挺多
        let num2 = 12;
        console.log(num2);//12
    }
    console.log(num2);//11
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值