JavaScript学习笔记(一)基本概念及基本数据类型

本文深入浅出地讲解了JavaScript中的基本概念、变量声明及作用域、基本数据类型等内容,并介绍了如何进行类型检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近把前一阵学习的原生JavaScript知识又整理了下,作为前端开发者,JS的掌握是必经之路,而掌握JS核心知识又是掌握JS的过程中不可绕过的坎儿,既然绕不过去那就老老实实的啃JS核心吧,前一阵看了《JavaScript面向对象编程指南》和《JavaScript高级程序设计》这两本书,写得很不错,适合初学者。下面总结下最近的学习笔记。先说说基本概念和基本数据类型。


基本概念

  1. 变量
    JavaScript语言中,变量可以用来保存任何类型的数据,都是通过关键字 var 声明,变量的使用一般有以下几种情况

    • 先声明变量再初始化

      var a ;     //声明变量a
      a=1;        //将1赋值给变量a
    • 声明变量和初始化同时使用

      var a =1;       //  声明变量a同时将1赋值给变量a
    • 同时声明多个变量

      var a,b,c=2,d="hello",e;

      上面例子同时声明了变量a,b,c,d,e同时将2赋值给变量c将字符串hello赋值给变量d

      注意

      • JS中未声明的变量也是可以直接使用的,
      a=1;

      对未声明的变量直接赋值也是允许的,和声明后在初始化的变量的区别在于每个变量的都有自己的作用域(即变量作用的有效区域)省略了var的变量就成了全局变量,在任何地方都可以被访问到,而通过var定义的变量将成为定义该变量作用域中的局部变量,尽管未声明的变量语法是允许的,但为了避免变量名污染(过多的全局变量名称相互覆盖导致程序出现你并不想得到的结果),变量应该尽量在声明后在使用。

      function wool(){
      var a =1;  //局部变量
          b=2;   //全局变量
      }
      wool();     //调用函数
      alert(b);   // "1"
      alert(a)    //出错,a未定义

      局部变量a在函数调用后就会被销毁,所有在调用变量a时就会报变量a未定义,因为a已经不存在。变量b未声明,在调用函数后即成为全局变量,在函数外部也可以访问到。

      • 变量命名
        JS变量可以是数字,字母,下划线,美元符号的组合,但是不能以数字开头,JS变量名区分大小写
      var  $;    
      var  a1b2c3;
      var  _123;
      var  _1a2B$3c;

      以上变量声明都是允许的

      var  123;
      var  1a;
      var  3$;

      以上变量声明是不合法的

      var a;
      var A;

      以上两个变量是不同的


基本数据类型

JavaScript 只有6种数据类型(没错,6种就够了!我认为这足以让JS成为一门不可替代的优秀编程语言,千万别小看这几个数据类型,不把它们彻底搞清楚,在码代码时会疯掉的)绕远了,先简单介绍下JS中的数据结构.
JS中的6种数据结构又分为5种基本数据类型和1种Object(对象)类型, 其中5种基本数据类型有number(数字)、string(字符串)、boolean(布尔值)、null、undefined。你估计会问函数呢?数组呢?连C语言都有的 JS不会没有吧,当然有!函数,数组,日期等等等等。它们都是属于Object类型,Object类型的强大超出你的想象,以后的笔记中会专门总结。下面来具体说JS的五种基本数据类型。


类型检测

在总结数据类型前,需要先简单说下查看数据类型的方式,说到数据类型那么问题来了,JS是弱类型语言,所有的变量都用var声明,不像C,Java等强类型语言中变量声明有int,string之分,所以JS要通过类型检测来查看某个变量的类型,类型检测常用的方式有两种——使用typeofinstance of,其中instance of适用于对象中具体类型以及继承中父子类关系的检测,具体会在后面的学习笔记中总结。typeof能检测出number、string、boolean、undefined、function、object,在基本数据类型的检测中比较常用。

  var a =1;
  typeof a;         //"number"
  var b ="abc";
  typeof b;         //"string"
  var c =true;
  typeof =c;
  var d;            //"undefined"
  typeof d;
  var e =null;      
  typeof e;         //"object"

  function wool(){ alert("HelloWorld");}
  typeof wool;      //"function"

  1. number

数字类型中有整数和浮点数(带小数的数字)

var a =1;
typeof a; //"number" 
var b =1.1;
typeof b; //"number"

除了生活中常见的十进制数字,还有八进制和十六进制数字
八进制数字以0开头,十六进制数字以0x开头

var a = 012;  //八进制的10
var a = 0xA;  //十六进制的10;

数字还可以用指数的方式表示

var a = 1e+1; //10
var b = 2e+3; //2000
var c = 2e-3; //0.002

Infinity是一个特殊值,它表示超出范围的数值,但Infinity依然是一个数字类型

  typeof Infinity; //"number"
  var a = le+400;  
  a;                //Infinity

NaN(Not a Number)的意思是“不是一个数字”,不过NaN依然属于数字类型。

var a = NaN;
typeof a;   //"number"

2.string
字符串在定义时以单引号或双引号表示

var a = "HelloWorld!";  
typeof a;                //"string"
var b = 'Hey!Guys';
typeof b;                //"string"

JS中有隐式转换,可以在数字类型和字符串类型之间相互转换

var a ="10";
typeof a;     //"string"
a =a*1;       
typeof a;     //"number"
a = a+"";
typeof a;     //"string"
a = a-"";
typeof a;     //"number"

a = "a";      //将字母a赋值给变量a
a = a-"";     //NaN    转换number失败会得到NaN

3.boolean
布尔类型只要两种值:true、false

var a = true;
typeof a;    //"boolean"

JS中 !、 && 、 || 经常在使用这三种逻辑运算符涉及布尔运算,在布尔运算中,空字符串“”、null 、undefined、数字0、数字NaN、布尔值false这六个值转换为布尔值时得到的是false。

var a =1;
!!a;    //true     (求自身boolean值)

4.undefined
当声明变量而没有初始化时,JS会自动将该变量初始化为undefined(未定义)

var a;
a;          //"undefined"
typeof a;   //"undefined"
a === undefined; //true

5.null
null不同于未定义

var a = null;  
a;             //null
typeof a;      //"object"

null == undefined;  //  true
null === undefined; //  false 

这里出现几个问题,通过typeof发现,null的类型是object,可以简单理解为null类型是表示空对象的指针,在使用过程中,如果声明的变量将来需要被对象类型赋值,那么就把该变量初始化为null;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值