JS的基本概念和数据类型

什么是 JavaScript 语言

JavaScript 是一种轻量级的脚本语言。所谓“脚本语言”,指的是它不具备开发操作系统的能力,而是只用来编写控制其他大型应用程序(比如浏览器)的“脚本”,本身不提供任何的 API,都要靠宿主环境(host)提供,所以 JavaScript 只合适嵌入更大型的应用程序环境,去调用宿主环境提供的底层 API。

JavaScript 的核心语法部分相当精简,只包括两个部分:基本的语法构造(比如操作符、控制结构、语句)和标准库(就是一系列具有各种功能的对象比如Array、Date、Math等)。除此之外,各种宿主环境提供额外的 API(即只能在该环境使用的接口),以便 JavaScript 调用。以浏览器为例,它提供的额外 API 可以分成三大类。

  • 浏览器控制类:操作浏览器
  • DOM 类:操作网页的各种元素
  • Web 类:实现互联网的各种功能

JavaScript 与 Java 的关系

JavaScript 和 Java 的关系。它们是两种不一样的语言,但是彼此存在联系。JavaScript 的基本语法和对象体系,是模仿 Java 而设计的。但是,JavaScript 没有采用 Java 的静态类型。”。JavaScript 语言的函数是一种独立的数据类型,以及采用基于原型对象(prototype)的继承链。这是它与 Java 语法最大的两点区别。另外,Java 语言需要编译,而 JavaScript 语言则是运行时由解释器直接执行。

基本概念

语句

javascript以行为单位执行

语句是为了完成某种任务而进行的操作,如
var a = 1 + 3;

表达式

6+ 3就叫做表达式

语句与表达式的区别

前者主要为了进行某种操作,一般不需要返回值

后者是为了得到返回值,一定会返回一个值

变量

变量是对值的引用,使用变量等同于引用一个值
var a = 1
实际步骤是
var a;
a= 1;

变量提升

由于js引擎的工作方式,先解析代码获取所有被声明的变量,然后再一行一行的执行,这样就造成了,所有变量的声明语句,都会被提升到代码的头部,这就是变量提升

标识符

变量名就是最常见的标识符,规则如:

第一个字符,可以是任意Unicode字母(包括英文字母和其他语言的字母),以及美元符号($)和下划线(_)。

第二个字符及后面的字符,除了Unicode字母、美元符号和下划线,还可以用数字0-9。

注意点

  • JavaScript 的变量名区分大小写,A和a是两个不同的变量。
  • 变量的声明和赋值,是分开的两个步骤, 如果只是声明变量而没有赋值,则该变量的值是undefined。undefined是一个特殊的值,表示“无定义”。
  • 可以在同一条var命令中声明多个变量
  • JavaScript 是一种动态类型语言,也就是说,变量的类型没有限制,变量可以随时更改类型
  • 单行注释 //,多行 /* */ 之间
  • 三元运算符? :,可以用于逻辑判断。(条件) ? 表达式1 : 表达式2上面代码中,如果“条件”为true,则返回“表达式1”的值,否则返回“表达式2”的值。

数据类型

概述

JavaScript 语言的每一个值,都属于某一种数据类型,共有六种.

  • 数值(number):整数和小数(比如1和3.14)
  • 字符串(string):字符组成的文本(比如"Hello World")
  • 布尔值(boolean):true(真)和false(假)两个特定值
  • undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
  • null:表示无值,即此处的值就是“无”的状态。
  • 对象(object):各种值组成的集合

其中数值,字符串,布尔值成为原始类型的值,undefined和null一般被视为特殊值,对象则为合成类型的值,往往由多个原始类型的值合成

typeof运算符

JavaScript有三种方法,可以确定一个值到底是什么类型。

  • typeof运算符
  • instanceof运算符
  • Object.prototype.toString方法

typeof运算符可以返回一个值的数据类型,可能有以下结果:

(1)原始类型

数值、字符串、布尔值分别返回number、string、boolean。

(2)函数

函数返回function,虽然函数属于对象,但是typeof内部是将函数是返回function

(3)undefined

undefined返回undefined

(4)其他返回object

数组的类型也是object,这表示在JavaScript内部,数组本质上只是一种特殊的对象。
可以用instanceof运算符进行区分

一些特殊数值

NAN

1)含义

NaN是 JavaScript 的特殊值,表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合。

5 - ‘x‘ // NaN

上面代码运行时,会自动将字符串x转为数值,但是由于x不是数值,所以最后得到结果为NaN,表示它是“非数字”(NaN)。

另外,一些数学函数的运算结果会出现NaN。

Math.acos(2) // NaN

Math.log(-1) // NaN

Math.sqrt(-1) // NaN

0除以0也会得到NaN。

0 / 0 // NaN

需要注意的是,NaN不是独立的数据类型,而是一个特殊数值,它的数据类型依然属于Number,使用typeof运算符可以看得很清楚。

typeof NaN // ‘number‘

(2)运算规则

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

NaN === NaN // false

数组的indexOf方法内部使用的是严格相等运算符,所以该方法对NaN不成立。

[NaN].indexOf(NaN) // -1

NaN在布尔运算时被当作false。

Boolean(NaN) // false

NaN与任何数(包括它自己)的运算,得到的都是NaN。

Infinity

(1)含义

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

第一个场景是一个表达式的计算结果太大,超出了能够表示的范围,因此返回Infinity。第二个场景是0除以0会得到NaN,而非0数值除以0,会返回Infinity。

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

非零正数除以-0,会得到-Infinity,负数除以-0,会得到Infinity。

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

Infinity大于一切数值(除了NaN),-Infinity小于一切数值(除了NaN)。

Infinity与NaN进行比较,总是返回false。

(2)运算规则

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

0乘以Infinity,返回NaN;0除以Infinity,返回0;Infinity除以0,返回Infinity。

Infinity加上或乘以Infinity,返回的还是Infinity。

Infinity减去或除以Infinity,得到NaN。

Infinity与null计算时,null会转成0,等同于与0的计算。

Infinity与undefined计算,返回的都是NaN。

布尔值

布尔值:true/false

下列运算符会返回布尔值:

  • 二元逻辑运算符: &&(and), ||(or)
  • 前置逻辑运算符: !(not)
  • 相等运算符: ===, !==, !=
  • 比较运算符: > ,>= ,< ,<=

下面这些值如果转化为布尔值则为false,其他都为true

  • undefined
  • null
  • 0
  • NaN
  • ‘‘ ‘‘/‘ ‘ (空字符串)

空数组( [] )和空对象( {} )转化为布尔值为true

数据类型转换

转为字符串:使用 .toString或者String。

1、 .toString()方法:注意,不可以转null和underfined

//转为字符串-->toString方法

var bool=true;

console.log(bool.toString());

//注意,toString不能转null和underfined.

2、String()方法:都能转

console.log(String(null));

3、隐式转换:num  +  "",当 + 两边一个操作符是字符串类型,一个操作符是其它类型的时候,会先把其它类型转换成字符串再进行字符串拼接,返回字符串

var a=true;

var str= a+"";

console.log(‘str‘);

转为数值类型

1、Number():Number()可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,返回NaN

console.log(Number(true));

2、parseInt():

var a="12.3px";

console.log(parseInt(a);

//结果:12.3.  如果第一个字符是数字会解析知道遇到非数字结束.

var a="abc2.3";

console.log(parseInt(a);

////结果:返回NaN,如果第一个字符不是数字或者符号就返回NaN.

3、parseFloat():   parseFloat()把字符串转换成浮点数,parseFloat()和parseInt非常相似,不同之处在与parseFloat会解析第一个. 遇到第二个.或者非数字结束如果解析的内容里只有整数,解析成整数。

4、隐式转换:

var str="123";

var num=str-0;

console.log(num);

//结果为数值型;

转换为Boolean():0  ‘‘(空字符串) null undefined NaN 会转换成false  其它都会转换成true

1、Boolean():

console.log(Boolean(2));

2、一些环境中

var message;

if(message){};

3、隐式转换:!!

var str="123";

var bool=!!str;

console.log(str);

原文地址:https://www.cnblogs.com/ZXH-null/p/12303833.html

时间: 2024-10-05 00:28:47

JS的基本概念和数据类型的相关文章

小白总结的一些关于JS的基础概念

我的第一篇博客 ——JS的那些基础概念 接触前端已经整整一学年了,这是我第一次写博客,感觉心里装了无数只兔子,很紧张,很激动,也很兴奋. 第一次写,也不知道有没有什么套路,需不需要注意文采之类的.不管了,太激动了,我就直接写只要内容吧!下面是我总结的一些关于JS的基础概念: [变量]从字面上面,变量是可变的量:从编程角度讲,变量是用于存储某些/某种数值的存储器.我们可以把变量看作一个盒子用来存储物 品. [数组]变量用来存储数据,一个变量只能存储一个内容.如果你想存储多个内容,那么就可以用数组解

MongoDB入门学习(二):MongoDB的基本概念和数据类型

上一篇讲了MongoDB的安装和管理,其中涉及到了一些概念,数据结构还有一些API的调用,不知道的没关系,其实很简单,这篇会简单介绍一下. 1.文档 文档是MongoDB的核心概念,多个键值对有序的放在一起就是一个文档,文档是MongoDB存储数据最基本的数据结构.对MongoDB都是以文档的形式来操作的,使用了一种类似JSON的二进制BSON数据格式,对API的调用都是传的文档参数.每种编程语言都有标示文档的数据结构,比如java的map,lua的table,python的dict等等,但是都

JS基本概念和数据类型

语句 JavaScript 程序的执行单位为行(line),也就是一行一行地执行.一般情况下,每一行就是一个语句. 语句(statement)是为了完成某种任务而进行的操作,比如下面就是一行赋值语句. var a = 1 + 3; 这条语句先用var命令,声明了变量a,然后将1 + 3的运算结果赋值给变量a. 1 + 3叫做表达式(expression),指一个为了得到返回值的计算式.语句和表达式的区别在于,前者主要为了进行某种操作,一般情况下不需要返回值:后者则是为了得到返回值,一定会返回一个

浅谈Js对象的概念、创建、调用、删除、修改!

一.我们经常困惑,对象究竟是什么,其实这是一种思维,一种意识上的东西,就像我们都说    世界是有物质组成的道理一样,理解了下面的几句话!对象也不是那么抽象!    1.javascript中的所有事物都是对象,字符串.数值.数组.函数!    而且js还允许自定义对象!    2.对象就只是带有属性和方法的特殊数据类型    3.属性是与对象相关的值,方法是能够在对象上执行的动作! 其实在这里的时候我们应该就有一个疑问要解决了,我们说函数是一个对象,为什么?    很简单,js中所有的事物都是

重操JS旧业第二弹:数据类型与类型转换

一 数据类型 1 js中的数据类型 1.1 数据类型列举 1)number类型 2)boolean类型 3)string类型 4)对象类型 5)函数类型 6)undefined类型 1.2 数据类型获取 typeof :注意这个并不是一个函数,而是一个操作符,怎么使用? typeof 'asd'  结果:string 2 各种类型详解 2.1 number类型 2.1.1概念理解:即所有实数,包括整型,浮点型,这个很好理解,但是有个特例 2.1.2特殊NaN:NaN本身是一个number类型,但

HTML5独家分享:原生JS学习笔记1——基本数据类型和运算符

JS介绍 js的历史 在上个世纪的1995年,当时的网景公司正凭借其Navigator浏览器成为Web时代开启时最著名的第一代互联网公司. 由于网景公司希望能在静态HTML页面上添加一些动态效果,于是叫Brendan Eich这哥们在两周之内设计出了JavaScript语言.你没看错,这哥们只用了10天时间. 为什么起名叫JavaScript?原因是当时Java语言非常红火,所以网景公司希望借Java的名气来推广,但事实上JavaScript除了语法上有点像Java,其他部分基本上没啥关系. J

JavaScript基础——基本概念:数据类型及其转换

任何语言的核心必然会描述这门语言最基本的工作原理.而描述的内容通常都要设计这门语言的语法.操作符.数据类型.内置功能等用于构建复杂解决方案的基本概念. 语法 ECMAScript的语法大量借鉴了C及其他类语言(如Java和Perl)的语法.因此,熟悉那些语言的开发人员在接受ECNAScript更加宽松的语法时,一定会有一种轻松自在的感觉. 区分大小写 要理解的第一个概念就是ECMAScript中的一切(变量.函数和操作符)都区分大小写.标识符 所谓标识符,就是指变量.函数.属性的名字,或者函数的

js的闭包概念

一.变量的作用域要懂得闭包,起首必须懂得Javascript特别的变量作用域.变量的作用域无非就是两种:全局变量和局部变量.Javascript说话的特别之处,就在于函数内部可以直接读取全局变量. Js代码 var n=999; function f1(){ alert(n); } f1(); // 999另一方面,在函数外部天然无法读取函数内的局部变量.Js代码 function f1(){ var n=999; } alert(n); // error这里有一个处所须要重视,函数内部声明变量

js继承的概念

js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念.所以,要想实现继承,可以用js的原型prototype机制或者用apply和call方法去实现 在面向对象的语言中,我们使用类来创建一个自定义对象.然而js中所有事物都是对象,那么用什么办法来创建自定义对象呢?这就需要用到js的原型: 我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(protot