值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。

注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。

引用数据类型:对象(Object)、数组(Array)、函数(Function)。

js中  var name="Volvo XC60";        var name='Volvo XC60';    '  '  与 " " 作用是相同的  

=== 为绝对相等,即数据类型与值都必须相等。

JavaScript 数组

下面的代码创建名为 cs 的数组:

var cs=new Array();
cs[0]="Saab";
cs[1]="Volvo";
cs[2]="BMW";

或者 (condensed array):

var cs=new Array("Saab","Volvo","BMW");

或者 (literal array):  例;var cs=["Saab","Volvo","BMW"];

JavaScript 对象

对象由 {  } 分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。

属性由逗号分隔:    var test={name:"John", three:"Doe", id:666};

对象有两种寻址方式

1.name=test.name;         2.name=test["name"];

两种方式访问对象属性:

1.test.name;              2.test["name"];

 

 "JavaScript 对象是变量的容器"。但是,我们通常认为 "JavaScript 对象是键值对的容器"。

键值对通常写法为 name : value (键与值以冒号分割)。键值对在 JavaScript 对象通常称为 对象属性。

 

通常 fullName() 是作为 person 对象的一个方法, fullName 是作为一个属性。

如果使用 fullName 属性,不添加 (), 它会返回函数的定义(函数表达式);添加括号输出函数执行结果

document.getElementById("demo1").innerHTML = "不加括号输出函数表达式:" + person.fullName;           不加括号输出函数表达式:function() { return this.firstName + " " + this.lastName; }
document.getElementById("demo2").innerHTML = "加括号输出函数执行结果:"  +  person.fullName();     加括号输出函数执行结果:test  java

 

局部 JavaScript 变量

在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。

全局 JavaScript 变量

在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。

JavaScript 变量的生存期

JavaScript 变量的生命期从它们被声明的时间开始。

局部变量会在函数运行以后被删除。

全局变量会在页面关闭后被删除。

 

非严格模式下给未声明变量赋值创建的全局变量,是全局对象的可配置属性,可以删除。

var var1 = 1; // 不可配置全局属性var2 = 2; // 没有使用 var 声明,可配置全局属性console.log(this.var1); // 1console.log(window.var1); // 1console.log(window.var2); // 2delete var1; // false 无法删除  局部变量无法被删除console.log(var1); //1delete var2;  //全局属性可以被删除
console.log(delete var2); // true 已经删除console.log(var2); // 已经删除 报错变量未定义

JavaScript 作用域

在 JavaScript 中, 作用域为可访问变量,对象,函数的集合

局部变量:只能在函数内部访问。 函数参数只在函数内起作用,是局部变量。

全局变量有 全局作用域: 网页中所有脚本和函数均可使用。 

在 HTML 中, 全局变量是 window 对象: 所有数据变量都属于 window 对象。

如果变量在函数内没有声明(没有使用 var 关键字),该变量为全局变量。

JavaScript 变量生命周期

JavaScript 变量生命周期在它声明时初始化。

局部变量在函数执行完毕后销毁。

全局变量在页面关闭后销毁。

你的全局变量,或者函数,可以覆盖 window 对象的变量或者函数。

局部变量,包括 window 对象可以覆盖全局变量和函数。

注:Window 对象表示浏览器中打开的窗口

 

常见的HTML事件的列表:

 JavaScript基础总结(一)_JavaScript

JavaScript 字符串用于存储和处理文本。

在JavaScript 中,字符串写在单引号或双引号中;

下表中列举了在字符串中可以使用转义字符转义的特殊字符:

JavaScript基础总结(一)_JavaScript_02

 

字符串属性和方法

属性:        描述:

constructor        返回创建字符串属性的函数

length     返回字符串的长度

prototype        允许您向对象添加属性和方法

字符串方法:

方法描述
charAt()返回指定索引位置的字符
charCodeAt()返回指定索引位置字符的 Unicode 值
concat()连接两个或多个字符串,返回连接后的字符串
fromCharCode()将 Unicode 转换为字符串
indexOf()返回字符串中检索指定字符第一次出现的位置
lastIndexOf()返回字符串中检索指定字符最后一次出现的位置
localeCompare()用本地特定的顺序来比较两个字符串
match()找到一个或多个正则表达式的匹配
replace()替换与正则表达式匹配的子串
search()检索与正则表达式相匹配的值
slice()提取字符串的片断,并在新的字符串中返回被提取的部分
split()把字符串分割为子字符串数组
substr()从起始索引号提取字符串中指定数目的字符
substring()提取字符串中两个指定的索引号之间的字符
toLocaleLowerCase()根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射
toLocaleUpperCase()根据主机的语言环境把字符串转换为大写,只有几种语言(如土耳其语)具有地方特有的大小写映射
toLowerCase()把字符串转换为小写
toString()返回字符串对象值
toUpperCase()把字符串转换为大写
trim()移除字符串首尾空白
valueOf()返回某个字符串对象的原始值

JavaScript运算符

运算符 = 用于给 JavaScript 变量赋值。

算术运算符 + 用于把值加起来。

y=5:

运算符描述例子x 运算结果y 运算结果
+加法x=y+275
-减法x=y-235
*乘法x=y*2105
/除法x=y/22.55
%取模(余数)x=y%215
++自增x=++y66
x=y++56
--自减x=--y44
x=y--54

JavaScript 赋值运算符。

赋值运算符用于给 JavaScript 变量赋值。

给定 x=10 和 y=5,下面的表格解释了赋值运算符:

运算符例子等同于运算结果
=x=y x=5
+=x+=yx=x+yx=15
-=x-=yx=x-yx=5
*=x*=yx=x*yx=50
/=x/=yx=x/yx=2
%=x%=yx=x%yx=0

用于字符串的 + 运算符

+ 运算符用于把文本值或字符串变量加起来(连接起来)。

如需把两个或多个字符串变量连接起来,请用 + 运算符。

对字符串和数字进行加法运算

两个数字相加,返回数字相加的和,如果数字与字符串相加,返回字符串,

x=5+5;
y="5"+5;
z="Hello"+5;

x,y, 和 z 输出结果为:

10
55
Hello5

JavaScript 比较 和 逻辑运算符

比较和逻辑运算符用于测试 true 或者 false。

比较运算符

比较运算符在逻辑语句中使用,以测定变量或值是否相等。

<p给定x=5,下面的表格解释了比较运算符:

JavaScript基础总结(一)_JavaScript_03

如何使用

可以在条件语句中使用比较运算符对值进行比较,然后根据结果来采取行动:

if (age<18) x="Too young";

逻辑运算符

逻辑运算符用于测定变量或值之间的逻辑。

给定 x=6 以及 y=3,下表解释了逻辑运算符:

JavaScript基础总结(一)_JavaScript_04

条件运算符

JavaScript 还包含了基于某些条件对变量进行赋值的条件运算符。

年龄:

  

 JavaScript多元运算符

p>1?p<b?p>b:p=6:p=3p>1? 整体 :p=3

1、当 p>1 时返回 p

  • 1.1、当 pb
  •  1.2、当 p>=b 时返回 p=6

2、当 p<=1 是返回 p=3 所以先执行 1

3、实例中当 p=9 的时候,返回 p

 

JavaScript 中有三种逻辑运算符:

 

1. 取反 !

 

首先把数据转化为布尔值,然后取反,结果为 true 或 false。

 

<scripttype="text/javascript">var a = [1,2,3];var b = "hello";var obj = new Object();var d;console.log(!"");   //trueconsole.log(!d);    //trueconsole.log(!a);    //falseconsole.log(!b);    //falseconsole.log(!obj);  //false

 

2. 逻辑与 &&

 

JavaScript 中逻辑与和其他语言不太一样,如果第一个操作数是 true(或者能够转为 true),计算结果就是第二个操作数,

如果第一个操作数是 false,结果就是 false(短路计算),对于一些特殊数值不遵循以上规则。

(个人理解为:如果运算的第一个操作数为true,则返回第二个操作数,反之则返回第一个操作数)

返回的不是单纯的 true 还是 false,而是具体的值;

若是第一个值转换布尔值为 true,就返回第二个值;反之,返回第一个值。

白话说就是:哪个值是错的就返回哪个值,如果都是对的,返回最后一个值。

<scripttype="text/javascript">var a = [1,2,3];var b = "hello";var obj = new Object();var d;console.log(true && 10);            //第一个操作数是true,结果是第二个操作,也就是10console.log(false && b);            //第一个操作数是false,结果flaseconsole.log(100 && false);          //第一个操作数是100,结果flaseconsole.log(undefined && false);    //第一个操作数是undefined,结果undefinedconsole.log(NaN && false);          //第一个操作数是NaN,结果NaNconsole.log(null && false);         //第一个操作数是null,结果nullconsole.log('' && false);           //第一个操作数是空串,结果空串console.log(0 && 100);              //结果是0console.log(5 && 100);              //100console.log(a && b);                //helloconsole.log(obj && 200);            //200

 

3. 逻辑或 ||

如果第一个操作数不是 false,结果就是第一个操作数,否则结果是第二个操作数。如果第一个操作数能够转为 true,

结果就是第一个操作数(个人理解为:如果运算的第一个操作数为 true,则返回第一个操作数,反之则返回第二个操作数)

同 && 类似,返回的不是单纯的 true 和 false,而是具体的值。

这个是从头开始,遇到能转换成 true 的值,就返回那个值,如果没有 true 的就返回最后一个值。

<scripttype="text/javascript">var a = [1,2,3];var b = "hello";var obj = new Object();var d;console.log(true || 10);        //第一个操作数是true,结果是第一个操作,也就是trueconsole.log(false || b);        //第一个操作数是false,结果是第二个操作数bconsole.log(100 || false);      //第一个操作数是100,结果100console.log(undefined || 9);    //第一个操作数是undefined转false,结果9console.log(NaN || false);      //第一个操作数是NaN转false,结果第二个操作数console.log(null || a);         //第一个操作数是null转false,结果aconsole.log('' || false);       //第一个操作数是空串转false,结果第二操作数console.log(0 || 100);          //结果是100console.log(5 || 100);          //5console.log(a || b);            //aconsole.log(obj || 200);        //obj