文章目录

  • 一、常量
  • 二、变量
  • 1.变量定义/声明
  • 2.变量命名
  • 3.数据类型
  • 3.1 基本数据类型和引用数据类型
  • 3.2 基本数据类型和引用数据类型区别
  • 3.3 数据类型的判断
  • 3.4 数据类型的转换
  • 4. JS是弱引用语言
  • 三、运算符
  • 1. 算数运算符
  • 2. 赋值运算符
  • 3. 一元运算符
  • 4. 关系运算符
  • 5.逻辑运算符
  • 6.位运算符


一、常量

常量/直接量( 字面量 literal):就是程序中直接显示出来的数据
100 //数字字面量
‘田雨飞’ //字符串字面量
false //布尔字面量

二、变量

1.变量定义/声明

定义:var age; //var 是关键字,age是变量名
赋值: age = 20;

定义的同时赋值: var age = 20;【注】声明/定义变量的同时,赋值,叫做初始化。
可以一次定义多个变量: var name=“tianyufei", age=18,weight=108;

2.变量命名

【注】用户自定义的名字叫做标识符,变量名也是标识符。
JS的标识符:
■ 标识符是指JS中定义的符号,例如:变量名、函数名等。
■ 标识符可以由任意的大小写字母、数字、下划线(_)和美元符($)组成,但是不能以数字开头不能是js中的保留字、关键字。
■ 标识符区分大小写,如:age和Age是不同的变量。但强烈不建议,用同一个单词的大小写区分两个变量。
■ 见名思意

JavaScript常量可分类为 js常量是什么_JavaScript常量可分类为

3.数据类型

3.1 基本数据类型和引用数据类型

基本数据类型:String、Number、Boolean、Null、Undefined、Symbol
引用数据类型:Object(Array、Date、String、Number、Boolean、RegExp、Function)

内置对象继承自Object,Function.prototype._ _ proto _ _ = Object.prototype

3.2 基本数据类型和引用数据类型区别

基本数据类型和引用数据类型

  1. 内存分配区别:存放在栈内存中简单的数据段——存储在堆内存的多个值构成的对象
  2. 访问方式区别:值访问——地址访问
  3. 变量拷贝区别:完全复制——只复制地址
  4. 参数传递区别:变量值传递给参数(互不影响)—— 参数的值为对象地址(互相影响)

3.3 数据类型的判断

(1)typeOf:判断5种基本数据类型,null会返回Object
(2)A instanceof B:判断对象类型,可以判断自定义对象类型
检验A是否为B的实例对象:查看B的原型对象是否在A的原型链上
(3)Object.prototype.toString.call():判断基本数据类型和引用数据类型,但是不能判断自定义类型

3.4 数据类型的转换

相等和全等区别
相等:先强制转换变量类型,再比较
全等:不转换类型,一旦类型不同,就是不全等

(1)强制转换
Number(参数):把任何类型转换成数值类型;
String(参数):可以将任何类型转换成字符串;
Boolean(参数):可以将任何类型的值转换成布尔值;
parseInt(参数1)将字符串转换成整数;parseInt(‘123’) // 123
parseFloat()将字符串转换成浮点数字;

(2)隐式转换
+:字符串+任何数据类型 = 字符串
-/:数字 (-/) 任何数据类型 = 数字
规则1:任何类型的数据和字符串类型的数据做相加(+)操作时,其他数据类型会自动的转换为字符串类型。此时的相加(+)不再是数学意义上的加法,而是表示“拼接”的意思
规则2:任何其他数据除了和字符串做相加操作外,与数字类型做算术运算时,其他数据会自动的转换为数字,字符串是数值会自动的转换为数字,否则会转换为NaN(对于非法字符的情况通常会返回NaN:‘1’‘a’ //NaN,这是因为parseInt(a)值为NaN,1NaN还是NaN)。
规则3:任何数据除了和字符串做相加运算外,与NaN做算术运算的结果始终都是NaN。包括NaN本身和NaN做运算的结果也是NaN。

判断语句中的判断条件需要是 Boolean类型
对象 => 字符串 => 数值 布尔值 => 数值
对象和布尔值进行比较时,对象先转换为字符串,然后再转换为数字,布尔值直接转换为数字

console.log([] == true); //false []转换为字符串’’,然后转换为数字0,true转换为数字1,所以为false。对象和字符串进行比较时,对象转换为字符串,然后两者进行比较。
console.log([1,2,3] == ‘1,2,3’); // true [1,2,3]转化为’1,2,3’,然后和’1,2,3’, so结果为true;对象和数字进行比较时,对象先转换为字符串,然后转换为数字,再和数字进行比较。
console.log([1] == 1); // true 对象先转换为字符串再转换为数字,二者再比较 [1] => ‘1’ => 1 所以结果为true。字符串和数字进行比较时,字符串转换成数字,二者再比较。
console.log(‘1’ == 1) // true字符串和布尔值进行比较时,二者全部转换成数值再比较。
console.log(‘1’ == true); // true布尔值和数字进行比较时,布尔转换为数字,二者比较。
console.log(true == 1); // true
undefined和null 比较返回true,二者和其他值比较返回false
2==true为false

字符串进行大小比较时:Number(‘23’ < ‘3’) == true:单个进行ASCII值的大小比较
Number(false) == 0 Number([]) == 0 Number(null) == 0
0 ‘’ null undefined —— false
非空字符串(包含空格)-> true;

null 表示是一个空对象,属于无值类型
undefined 表示未赋值,属于无值类型
’ ’ 表示是一个空字符串,属于有值类型
0 表示一个数字0,属于有值类型
false 表示一个布尔值 false,也属于有值类型
可以看到 null 和 undefined 属于无值类型,它们同有值类型肯定是不相等了。
null == undefined
‘’,0,false两两相等
null、undefined与0、‘’、false个皆不等
‘’ == ‘ ‘ //false Number(’’)==Number(’ ')//true
null、undefined、NaN、‘’ 、0、false取反为true,其余取反为false(![] = false)

4. JS是弱引用语言

js是弱数据类型的语言,容错性较高。
定义时不需要定义类型,赋值赋的是啥类型就是啥类型
var temp; //temp时啥数据类型?不确定
temp= 12; //temp变量是数字类型
temp = “hello”; //temp变量变成了字符串类型

怎么运行查看变量的类型
var x=123;
alert(typeof x);

三、运算符

算术运算符:+,-, * , /, %
关系运算符:<、>、<=、>=、== 、=== 、!= 、!==
逻辑运算符:&& 与(且)、|| 或、! 非
赋值运算符: =、+=、-=、*=、/=、%=
一元运算符(自增、自减): ++a, a++ --a, a–

JavaScript常量可分类为 js常量是什么_字符串_02


JavaScript常量可分类为 js常量是什么_字符串_03


JavaScript常量可分类为 js常量是什么_字符串_04

1. 算数运算符

算术运算符:+,-, * , /, %
当被除数为0的时候:
正数/0 结果为 infinity (无穷大)
负数/0 结果为 -infinity(无穷小)

2. 赋值运算符

【赋值运算符】 =、+=、-=、*=、/=、%=

  1. 赋值运算符用等于号(=)表示,就是把右边的值赋给左边的变量。
  2. 复合赋值运算符通过 x=的形式表示,x 表示算术运算符。

3. 一元运算符

【一元运算符】(自增、自减): ++a, a++ --a, a- -
概念:只能操作一个值的运算符叫做一元运算符。

var age = ++box; //加后取值 先执行加法运算,在取值
var height = box++; //加前取值 先取值,再执行加法运算

4. 关系运算符

【注】用于进行比较的运算符称作为关系运算符:小于(<)、大于(>)、小于等于(<=)、大于等 于(>=)、相等( == )、不等(!=)、全等(恒等)(=== )、不全等(不恒等)(!==)

关系运算的规则
和其他运算符一样,当关系运算符操作非数值时要遵循一下规则:

  1. 两个操作数都是数值,则数值比较;
  2. 两个操作数都是字符串,则比较两个字符串对应的字符编码值;
  3. 两个操作数类型不同,转换为相同类型后进行比较,转换规则:对象 => 字符串 => 数值 布尔值 => 数值(详情见3.4 数据类型转换)
  4. 在全等和全不等的判断上,比如值和类型都相等,才返回 true,否则返回 false

关系运算(特殊值)

JavaScript常量可分类为 js常量是什么_字符串_05

5.逻辑运算符

逻辑运算符: 逻辑与(AND)、逻辑或(OR)、逻辑非(NOT)

逻辑运算的短路操作
逻辑运算符属于短路操作,顾名思义,如果第一个操作数返回是 false,第二个数不管是 true 还是 false 都返回的 false。
逻辑运算符也是短路操作。当第一操作数的求值结果为 true, 就不会对第二个操作数求值了。

逻辑运算符(非) 逻辑非(NOT):!
逻辑非运算符可以用于任何值。无论这个值是什么数据类型,这个运算符都会返回一个布尔值。它的流程是:先将这个值转换成布尔值,然后取反,规则如下:

  1. 操作数是一个空字符串,返回 true;
  2. 操作数是一个非空字符串,返回 false;
  3. 操作数是数值 0,返回 true;
  4. 操作数是任意非 0 数值(包括 Infinity),false;
  5. 操作数是 NaN,返回 true;
  6. 操作数是 undefined,返回 true;

6.位运算符

http://www.w3school.com.cn/js/pro_js_operators_bitwise.asp