JavaScript教程一——数据类型与变量

JavaScript 教程 JavaScript 是一种轻量级的、解释型的、面向对象的脚本语言,主要用于网页开发,使网页具备交互性。它可以在浏览器中运行,也可以在服务器端(如 Node.js 环境)运行。 阅读详情

1、简介

ECMAScript

JavaScript语言的标准,被称为ECMAScript标准。最新版ECMAScript 6标准(简称ES6)在2015年6月正式发布。

JavaScript组成

ECMAScript(ES):js核心解释器
DOM (Document Object Model 文档对象模型):操作HTML对象,使用document。
BOM (Browser Object Modal 浏览器对象模型):操作浏览器对象,使用window。

快速入门

<script>...</script>

包含的代码就是JavaScript代码脚本,它将直接被浏览器执行。

<html>
	<head>
		<script>
			alert('Hello, world');
		</script>
	</head>
	<body>
		...
	</body>
</html>

第二种方法是把JavaScript代码放到一个单独的.js文件,然后在HTML中通过

<script src="..."></script>

引入这个文件。

<html>
	<head>
		<script src="/static/js/abc.js"></script>
	</head>
	<body>
		 ...
	</body>
</html>

有些时候你会看到 script标签还设置了一个type属性,但这是不必要的,因为默认的type就是JavaScript,所以不必显式地把type指定为JavaScript

<script type="text/javascript">
	...
</script>

1.1 基础语法

JavaScript的语法和Java语言类似,每个语句以;结束,语句块用{…}。但是,JavaScript并不强制要求在每个语句的结尾加;,浏览器中负责执行JavaScript代码的引擎会自动在每个语句的结尾补上;。

var name = 'ruby_ruby';
if (name === 'ruby_ruby') {
	alert('1');
}else {
	alert('2');
}  // 注意,== 判断值是否相等,=== 还判断类型

1.2 注释

//  此处的文字会被忽略,但是之后注释掉一行
/* 	.....此处的文字会被忽略, 不限于一行
	...........................
	...........................*/

1.3 大小写

请注意,JavaScript严格区分大小写,如果弄错了大小写,程序将报错或者运行不正常。

数据类型和变量

1.4 数据类型(六种,这里先忽略了ES6新增的Symbel)

js中数据类型可以分成两大类:原始类型和引用类型(对象)。

1.4.1 原始类型与引用类型对比

原始类型

原始类型的数据,存储在内存的栈里面,同时注意,一旦在栈里面设置了值value,那么就不可以再改变。
看下面的🌰:

var a = 20;   //   a  指针指着20这个value
|————————————————————————|
| a        |       20    |
|————————————————————————|

var b = a; //   多了一个b,同时也是指向一个20的value,但是和a的value不是一个,这只是一个单纯的拷贝而已。
|————————————————————————|
| a        |       20    |
| b        |       20    |
|————————————————————————|

a = 30;// a 指针换了一个value,注意:20这个value不可变
|————————————————————————|
|          |       20    |
| b        |       20    |
| a        |       30    |
|————————————————————————|

从上面的🌰可以看出,原始类型的赋值直接是给变量直接赋值,而且是通过拷贝而来,赋值之后,a和b就完全没关系了,但是20这个value需要进行回收,这就涉及到垃圾回收了。

引用类型

引用类型的数据,存储在内存的堆里面,同时引用类型拥有自己的属性和方法,这就是根本的不同。引用类型的赋值就不是拷贝了,而是引用。

var a = new Array();  //   a 引用了一个数组对象,注意,变量 a 还存在栈里面,不过栈里面存的是对象的地址。
|——————————————————————————————————|
|  a       |       addressA        |
|——————————————————————————————————|

var b = a;  // 注意,b拷贝回去的是一个地址,最后 堆 里面的值一个都没变,所以a和b没有区别。
|——————————————————————————————————|
|  a       |       addressA        |
|  b       |       addressA        |
|——————————————————————————————————|

a.name = 'XXXXX'; // 此时更改的是堆,很明显,b.name也是‘XXXXX’
a.name = 'YYYYY'; // b.name 也是‘YYYYY’
要想彻底改变a和b的关系,需要帮a或者b找到新的引用(也就是新的对象地址)。

1.4.2 数据类型

1、Number

JavaScript不区分整数和浮点数,统一用Number表示,都是浮点型。
Number可以直接做四则运算,规则和数学一致。

但是注意:因为浮点数计算会出现精度缺失问题,所以尽可能不用浮点数记性运算。

同时注意:NaN是number类型。

四则运算

&& || ! + - * / %

注意:一般定义基础类型的数据的时候,是不会加 new 的,因为这是对象的创建方法。

const s = Number(0);
typeof(s); // number
const t = new Number(0);
typeof(t); // object
console.log('a' || 0);   //  'a'  字符会转变成ASCII码进行计算
console.log('a' &&  0);   // 0

Number方法

s.toString(); // '8'
// 十进制转换成二进制、八进制、十六进制字符串
s.toString(2);
s.toString(8);
s.toString(16);
Math.abs(a) // 绝对值
Math.min(a,b) // 最小值
Math.max(a,b) // 最大值

2、字符串 string

字符串是以单引号’或双引号"括起来的任意文本。

3、布尔值 boolean

布尔值和布尔代数的表示完全一致,一个布尔值只有true、false两种值,要么是true,要么是false,可以直接用true、false表示布尔值。

&& 与 || 或 ! 非

比较运算符

JavaScript在设计时,有两种比较运算符:

第一种是 == 比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;

第二种是 === 比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较。

由于JavaScript这个设计缺陷,不要使用 == 比较, 始终坚持使用 === 比较。

但是NaN是不用进行===判等的,因为NaN不和任何数字相等,甚至它自己,因此需要采用函数进行。

isNaN(NaN)   // true

4、null 和 5、undefined

null表示一个“空”的值。
undefined,它表示“未定义”。

6、对象(引用类型)

JavaScript的对象是一组由键-值组成的无序集合,同时也是最为特别的类型,例如:

var person = {
	name: 'Bob',
	age: 20,
	tags: ['js', 'web', 'mobile'],
	city: 'Beijing',
	hasCar: true,
	zipcode: null
	};

JavaScript对象的键都是字符串类型,值可以是任意数据类型。
每个键又称为对象的属性。
要获取一个对象的属性,我们用 对象变量.属性名 的方式:

person.name //  'Bob'
person.age // 20

1.5 垃圾回收机制

上面我们提到过,原始变量的value无法更改,当不使用这个内存后,就需要进行垃圾回收,而程序员是无法直接操纵内存的,就需要JS去判断进行垃圾回收。

JS后台有一个垃圾回收器,有着自己的垃圾回收机制:

1.5.1 引用计数

所谓引用计数,便是这块内存被变量或对象引用的次数,举个🌰:

var a = [1,2,3]; //    [1,2,3] 这块内存被变量a引用了。
var b = {
	f();   //  函数这块内存被对象b引用了
}

有着引用,那么就不可以释放这块内存,当一块内存的引用为0,就说明没有一个可访问对象或变量需要这块内存,就可以释放掉了。

1.5.2 标记清除

当变量进入环境时,例如,在一个函数中声明一个变量,就将这个变量标记为"进入环境",从逻辑上讲,永远不能释放进入环境变量所占用的内存,因为只要执行流进入相应的环境,就可能会用到它们。而当变量离开环境时,则将其标记为"离开环境"。

function test(){
	var a = 10;    //被标记"进入环境"
	var b = "hello";    //被标记"进入环境"
}
test();    //执行完毕后之后,a和b又被标记"离开环境",被回收

垃圾回收机制在运行的时候会给存储在内存中的所有变量都加上标记,然后,它会去掉处在环境中的变量及被环境中的变量引用的变量标记(闭包)。而在此之后剩下的带有标记的变量被视为准备删除的变量,原因是环境中的变量已经无法访问到这些变量了。最后垃圾回收机制到下一个周期运行时,将释放这些变量的内存,回收它们所占用的空间。

1.6 变量

变量在JavaScript中就是用一个变量名表示,变量名是大小写英文、数字、$和_的组合,且不能用数字开头。
声明一个变量用
var
语句。

var a;  // 申明了变量a,此时a的值为undefined
a = 1;  // 定义
console.log(a); // 1   打印a
a = '123'
console.log(a); // '123'   打印a

在JavaScript中,使用等号=对变量进行赋值。可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,但是要注意只能用var申明一次。

1.6.1 变量声明提升

JS中存在一个变量提升的概念,所谓变量提升,便是你声明了一个变量,那么 JS 防止出错,默认会把声明提升到代码执行的最前面,举个🌰:

x = 7;
console.log(x);    // 7
var x;     // 此时没有任何问题,var声明会变量提升

但是注意,变量提升只存在于声明,定义就不行,在举个🌰:

console.log(x);    //  undefined 
var x = 7;   

原理

变量提升的原理在于JS代码运行分为两部:编译、执行。编译阶段,会将 = 左侧的字符串进行提升,拉到最上方,= 右侧的则会自然顺序安置,所以会有变量提升。

1.7 strict严格模式

JavaScript里,如果一个变量没有通过var声明就被使用,那么该变量就自动被声明为全局变量:

a = 1;  //  a现在是全局变量

然而当多个文件同时声明a时会造成变量冲突。使用var声明的变量则不是全局变量,它的范围被限制在该变量被声明的函数体内。

ECMA在后续规范中推出了strict模式,在strict模式下运行的JavaScript代码,强制通过var声明变量,未使用var声明变量就使用的,将导致运行错误。
启用strict模式的方法是在JavaScript代码的第一行写上:

'use strict';

1.8 类型的判断

1、typeof

typeof A 是用来判断 A 的类型:

表达式为:typeof A,返回值为类型:Number/string/object等,typeof对于引用对象统一Object处理,因此判断数组、Set、Map根本分辨不出来。

2、instanceof

instanceof 是用来判断 A 是否为 B 的实例,因此主要用来判断 A 的详细类型,可以进行对象的进一步判断。

表达式为:A  instanceof  B ,返回值为 true / false 。

3、Object.prototype.toString.call

Object.prototype.toString.call, 调用该方法,默认返回当前对象的 [[Class]] 。这是一个内部属性,其格式为 [object Xxx] ,其中 Xxx 就是对象的类型。

对于 Object 对象,直接调用 toString() 就能返回 [object Object] 。而对于其他对象,则需要通过 call / apply 来调用才能返回正确的类型信息。

Object.prototype.toString.call('') ;   // [object String]
Object.prototype.toString.call(1) ;    // [object Number]
Object.prototype.toString.call(true) ; // [object Boolean]
Object.prototype.toString.call([]) ; // [object Array]

本文来源廖雪峰老师教程的笔记,有疑惑可以直接访问廖雪峰老师教程:https://www.liaoxuefeng.com/wiki/1022910821149312/1023022043494624

RAP 语义键:让 UUID 世界变得可读、可导航、可校验 RAP 语义键的核心价值与实现要点 语义键(Semantic Key)是 ABAP RAP 模型中连接技术实现与业务体验的关键设计:通过为实体指定一组业务可读的标识字段(如订单号、物料编码等),在保持技术主键(如UUID)不变的同时,显著提升用户界面的可读性和导航体验。 主要优势: 提升UI可读性:Fiori元素会突出显示语义键字段,帮助用户快速识别关键业务数据 改善导航体验:OData URL会使用可读的语义键而非技术ID,便于分享和排查问题 降低沟通成本:业务人员能准确引用有意义的业务标识而非技术ID 阅读详情

相关推荐

基于ENVI5.6与SARscape的哨兵一号时序InSAR实战:从数据准备到PS/SBAS结果解译

本文详细介绍了基于ENVI5.6与SARscape软件,利用哨兵一号(Sentinel-1)卫星数据,进行PS-InSAR与SBAS-InSAR时序分析,以监测地表形变的完整实战流程。内容涵盖从数据下载、软件配置、预处理、核心处理步骤到结果解译与质量评估,重点解析了PS与SBAS方法的关键参数设置、常见问题及解决方案,旨在帮助用户掌握从数据准备到成果分析的完整技术链条。

oo7890的博客 634

Javascript(一):变量,数据类型

白话:变量就是一个装东西的盒子。通俗:变量是用于存放数据的容器。我们通过变量名获取数据,甚至数据可以修改。使用表单、prompt获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算,而需要转换变量的数据类型。通俗来说,就是把一种数据类型的变量转换成另外一种数据类型。我们通常会实现3种方式的转换:①转换为字符串类型②转换为数字型③转换为布尔型。

Kiwi23333的博客 289

fMRI独立成分分析方法(ICA)工具GIFT

详细介绍了进行fmri数据进行ICA分析的工具包GIFT的使用,和进行ICA分析的流程。

m0_58256026的博客 1万+

JavaScript变量和数据类型总结

管你变量怎么变,一篇文章搞定(霸气)!

微风洋洋的博客 2548

C#实战:基于ONNX与SCRFD/ArcFace的高效人脸识别系统开发

本文详细介绍了如何在C#环境中,利用ONNX Runtime高效部署SCRFD人脸检测与ArcFace人脸识别模型,构建一个完整的、高性能的人脸识别系统。内容涵盖环境搭建、模型推理、人脸对齐、特征提取等核心模块,并提供了从Demo到生产系统的优化思路与实战代码,为.NET开发者提供了一套开箱即用的解决方案。

weixin_29061821的博客 488

PINN for PDE(偏微分方程)4 - 反向问题 - Burgers’ equation

PINN for PDE(偏微分方程)4 - 反向问题 - Burgers’ equation

m0_62030579的博客 3005

JavaScript 基础知识

1. 变量及其命名规范 在 JavaScript 中,使用等号 = 对变量进行赋值。可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,但是要注意只能用 var 申明一次。 这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。 变量的命名: 变量名只能由字母、数字、下划线、$ 组成,且开头不能是数字。 变量区分大小写。 变量名要符合两大法则之一: 小驼峰法则:变量首字母小写,之后每

diligent_lee的博客 699

【低照度图像增强系列】使用MSRCR(Multi-Scale Retinex with Color Restoration)算法对低照度图像进行增强处理

【低照度图像增强系列】使用MSRCR(Multi-Scale Retinex with Color Restoration)算法对低照度图像进行增强处理

静谧、淡雅 650

JavaScript之数据类型与变量

4.1 数据类型和变量 数据类型实际上就是数据的一种描述,任何一门编程语言都可以处理多种类型的数据,只是有的是强类型(Java) ,有的弱类型的(JavaScipt)。   JavaScipt数据类型有三种: 1、基本数据类型 JS中基本数据类型主要由3种组成:数值数据类型、文本数据类型、布尔数据类型 2、复合数据类型 JS中复合数据类型主要包括用来保存一组或者不同数据类型数据的数组...

IT_CREATE的博客 520

ADES1831和ADBMS6830

1、上电默认进入STANDBY模式,SPI发送0xFF也可以进入STANDBY模式2、看门狗定时器超时后,进入SLEEP状态3、配置寄存器中的REFON位使用WRCFGA命令将组A设置为1进入REFUP状态,此状态比待机状态更快地启动ADC转换。i<TOTAL_IC;i++)注意:读AFE数据时会随着AFE片数增加而增加,原因是唤醒时间和AFE片数密切相关,如果需要缩短时间,那么减少唤醒频次。

m0_61973119的博客 267

57、振荡扫描仪的挠性枢轴:原理、设计与材料选择

本文深入探讨了振荡扫描仪中挠性枢轴的工作原理、设计方法与材料选择。挠性枢轴因其无润滑、高精度、低周期性误差和潜在无限寿命等优势,广泛应用于光学、太空、医学和半导体等领域。文章分析了其在小角度下的优异性能与无法连续旋转等局限性,提供了关键设计公式,并对比了多种挠性材料的性能指标。同时,结合不同应用场景提出设计优化策略,并展望了微型化、智能化和高性能材料等未来发展趋势,为工程实践提供了系统的设计流程与选型建议。

numpy6sculptor的博客 95

JavaScript-变量和数据类型

变量 ECMAScript的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。定义变量时要使用var操作符,后跟变量名。 var message; 该行代码定义了一个名为message的变量,该变量可以用来保存任何值(像这样未经过初始化的变量,会保存一个特殊的值—undefined)。 ECMAScript也支持直接初始化变量,因此在定义变量的同时就可以设置变量的值。 va...

杨钊 690

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

JS教程(一)、变量和数据类型

例如:person = { firstName:“John”, lastName:“Doe”, age:50 };例如:fruits = [“apple”, “banana”, “orange”];在JavaScript中,使用var、let或const关键字来声明变量,具体使用哪个关键字取决于你想要的变量作用域和可变性。变量可以存储不同类型的数据,包括数字、字符串、布尔值、对象、数组等。总之,JavaScript的变量和数据类型是开发Web应用程序所必须掌握的基本概念,它们可用于实现各种想法和功能。

qq_40216018的博客 269

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

《JavaScript高级教程》学习笔记一、变量和数据类型

JavaScript的核心语言特性在ECMA-262中是以名为ECMAScript的伪语言的形式来定义的。 一、变量和数据类型 1. 变量 JavaSript是弱类型语言,可以通过var定义任何类型变量,同时同一变量可以被赋值成不同类型。 JavaScript可以在语句结尾省略分号,JS会自动添加分号,但是最好加分号:1.减少错误 2.方便压缩 3.提高性能 var msg ...

weixin_30371469的博客 90

JavaScript教程(一)JAVAscript的简单介绍/嵌入页面的方式/变量定义/数据类型及转换

一.JavaScript的简单介绍 1.JavaScript是一种基于对象和事件驱动的客户端脚本语言,提供用户和界面的交互方式. 2.JavaScript的编辑工具: &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;常见的JavaScript编辑工具有很多,例如记事本、 Hbuilder、Dreamweaver和Visual Studio,还有Sublime Text、 Notepad++等。 3...

qq_43434300的博客 307

JavaScript入门教程(一)基本语法:常量与变量、数据类型、表达式与运算符

JavaScript是世界上最流行的脚本语言,是属于 web 的语言,它适用于 PC、笔记本电脑、平板电脑和移动电话。被设计为向 HTML 页面增加交互性。一、在html中创建js的方法&lt;script type="text/JavaScropt"&gt; document.write("Hello,world"); &lt;/script&gt;&lt;script sr...

duan_2018的博客 498

【JavaScript用法】JavaScript(JS)的基本语法(JS数据类型,JS变量,JS运算符,JS流程控制语句)

JavaScript(JS)的基本语法 目录 JavaScript(JS)的基本语法 一. 与html结合方式 二. 注释 三. 数据类型: 四. 变量 五. 运算符(和Java有点类似) 六. 流程控制语句(和JAVA类似): 七. JS特殊语法: 一. 与html结合方式 1. 内部JS:定义<script>,标签体内容就是js代码(...

No8g攻城狮的博客 5106

JavaScript 的变量、数据类型

变量:装数据的容器,数据可以修改。其本质是变量是内存中存放数据的空间。一个变量被赋予新的值之后,原来的值就被覆盖掉了。只写一个var,要用英文逗号隔开。使用变量时必须声明,赋值。变量命名规范如下变量有名字和数据类型。数据类型的作用:决定如何将代表这些值的位存储到计算机的内存中。意思是不用提前声明变量类型,程序运行时会根据变量被赋予的值来自动确定变量的类型。1、数字型转换2、判断是否是数字的方法返回结果是bool值JS也有转义符(要写到字符串里面)用变量 变量不写到字符串里面,通过和字符串相连实现。

m0_73378139的博客 2554

黑马JS教程笔记(JavaScript教程)——JS基础

<head><title>JavaScript练习</title></head><body><script></script></body>

Dontla的博客 2661

JavaScript变量及数据类型

在JavaScript中我们可以使用变量来存储数据,而我们存储的数据又可以分为:字符串,数字,布尔值,数组等,并可以更改变量的值,因为变量如其名可变的量。数据类型,指的是对数据进行操作时数据的类型,不同的数据可以使用不同的类型来存储,如123这个数值,或者'字'文本等等。JavaScript简介-优快云博客C语言操作符和数据类型的存储详解_f2(&b)运算的是主函数还是调用函数-优快云博客。

lh11223326的博客 1565

【前端学习笔记】JavaScript学习一【变量与数据类型】

Symbol 是 ES6 中引入的新数据类型,它表示一个唯一的常量,通过 Symbol 函数来创建对应的数据类型,创建时可以添加变量描述,该变量描述在传入时会被强行转换成字符串进行存储:每个通过 Symbol() 函数创建的 Symbol 值都是唯一的,这意味着即使使用相同的字符串作为描述,每次调用 Symbol() 也会返回一个新的 Symbol。当试图访问对象的属性时,不仅在该对象上查找属性,还会在该对象的原型上查找属性,以及原型的原型,依此类推,直到找到一个名字匹配的属性或到达原型链的末尾。

qq_46056318的博客 1283

JavaScript【一】JavaScript变量与数据类型

JavaScript【一】JavaScript变量与数据类型

商务合作/软件定制/学习交流 1190

JavaScript 变量与数据类型详解

例如,对负数取平方根。

weixin_44826237的博客 1204

JavaScript 变量与数据类型全面解析

本文系统梳理了JavaScript的核心语法基础,重点讲解了变量定义(隐藏式与显示式)、数据类型(弱类型与强类型差异)、类型转换(自动与强制转换)、作用域规则(全局与局部变量)、变量提升特性及常量声明。文章通过对比Java等强类型语言,突出了JS作为弱类型语言的灵活性特点,并提供了字符串常用API等实用技巧,帮助初学者快速掌握JS编程基础。全文以实例说明核心概念,强调开发中应避免的常见错误,为前端开发打下坚实基础。

2302_80192044的博客 815

JavaScript变量,js定义变量

一、JavaScript的变量分类。js内存为堆或栈 1、基本数据类型变量 a.number 整型 b.string 字符串类型 c.Boolean 布尔值类型 d.null 空 e.undefined 未定义类型 PS:基本数据类型存放在栈中 2、引用数据类型变量 object 对象 array 数组 function 函数 PS:引用数据类型存放在堆中 二、JavaScript中var、let、const的区别和使用 1、var定义变量 var定义的变量能够预解析,如果变量没有定义就直

weixin_43392676的博客 7967
下一篇: Javascript教程二——字符串
ruby___ruby
博客等级 码龄9年 2粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值