Javascript学习摘要(1)——Javascript简介

一、Javascript语言的特点

1.1,Javascript是基于对象和事件驱动(动态)的。

它能直接响应用户或客户输入无需通过一个Web服务程序,对用户的响应是一个事件驱动的方式进行,事件驱动是指通过首页上的某个操作所产生的动作,这被称为一个事件。比如按下鼠标、移动窗口,选择菜单等都可以视为一个事件,当事件发生时,它可能会导致事件的响应。

1.2。Javascript是跨平台的

Javascript依赖于浏览器本身,与操作系统无关。

二、Javascript变量

2.1。定义变量

在定义变量时,var变量名称被统一使用,例如,var,甚至var的关键字也可以省略。

2.2,如何确定Javascript变量的类型

Javascript中变量的数据类型由js引擎决定。


var;名称是字符串类型。
var年龄=
var标志为true;
电子邮件只是一个声明,没有赋值,所以表示的类型是未定义的
name自动变成一个数字类型


2.3、使用TypeOf关键字查看特定数据类型的变量表示

typeof运算符有一个参数,即变量或值进行检查。例如:


VAR茎=测试;
警报(typeof茎); / /输出字符串
Alert (typeof); / / output number


调用typeof运算符为变量或值将返回下列值之一:

未定义的-如果变量未定义类型



布尔-如果变量是布尔类型



如果变量是数字类型



如果变量是String类型



对象——如果变量是引用类型或null类型。



测试代码:



var;名称是字符串类型。
警报(名称+姓名+类型类型);
var年龄=
Alert (age is +typeof age+ type);
var标志为true;
警报(型的标志是:+型标志);
name自动变成一个数字类型
警报(后重新分配的变量的数据类型的名称,名称是:+类型的名称);
电子邮件只是一个声明,没有赋值,所以表示的类型是未定义的
警报(类型的电子邮件是:+类型的电子邮件);
var = null;
*
为什么typeof运算符返回对象为空值。
这实际上是第一个Javascript执行错误,然后使用ECMAscript。现在,零是一个占位符对象,这也解释了这一矛盾,但从技术上讲,它仍然是原来的价值。
* /
警报(+种类+型);



运行结果:


三,Javascript数据类型
U3000 U3000

Javascript包含两种不同的数据类型:基本数据类型和引用数据类型。基本型指的是简单的数据,而引用类型是指由多个值对象。当我们给一个变量赋值,解析器必须做的第一件事是确定的值是基本类型的值或参考值类型。

3.1。基本数据类型

五种常见的基本数据类型:

布尔



字符串

undifined

无效的

这五种基本数据类型可以直接操作存储在变量中的实际值。

3.1.1、数字类型(数)和布尔类型(布尔)

请看下面的代码:



var =;
var;
= B;
警报(a + A);

var =真的;
var b = b;
b = false;
警报()



运行结果:


从运行结果中,我们可以看到B的值是一个值的副本。虽然两个变量的值是相等的,但两变量持有两种不同的基本数据类型的值。B刚救了一个副本的副本,当b值变为20,A的值仍为10。两个布尔变量,B1和B2,基本是相同的数据类型,并保存不同的两个基本数据类型的值,和B2的副本保存1份。所以,当B2的值更改为false,B1的值仍然是真实的。

下图演示了这个基本数据类型分配的过程:

堆栈段


3.1.2,字符串类型(字符串)

Javascript中的String字符串是一种特殊的基本数据类型。在许多语言中,字符串是以对象的形式表示的。在Javascript中,字符串是一种基本的数据类型,它是通过传递值的方式操作的,但它是一种非常特殊的基本类型。

请看下面的例子:



VaR策略=这是一个字符串;
变量strB =战略;
战略=这是另一个字符串;
警报(strB =+ strB);



运行结果:
U3000 U3000

正如你可以看到的结果来看,似乎一份战略给strB通过价值传递方式。当策略改变,会不会改变,我们似乎可以得出这样的结论是一个字符串的基本数据类型。

然而,由于字符串可以是任意长度和按值传递,所以一个副本的复制效率仍然很低。似乎字符串也可以用作引用类型。

请看下面的例子:


var a =myobject;
a.name = 我; / /添加动态字符串name属性
警报(a.name = + a.name / /);名称属性来访问,




结果表明:a.name =定义



运行结果:
U3000 U3000

运行结果表明字符串不能作为对象处理,也证明了虽然基本类型也可以添加属性,但它不是一个错误,事实上在测试完成后添加不能访问Javascript,字符串不能更改,Javascript不提供一种方法和字符串语法的改变。

请看下面的例子:


var b =myobject;
B = b.substring(,);
警报()


运行结果:
U3000 U3000

这样,在字符串myobject 无变化

可以说,字符串实际上并不符合上述两种数据类型,它是两个属性之间的一种特殊类型。

3.1.3、Null type

null类型只有一个专用的null值,和值的定义实际上是来自null值,那么ECMAscript是平等的。



警报(NULL =未定义的结果是:+(NULL =未定义))



运行结果:
U3000 U3000

虽然这两个值是相等的,但它们有不同的含义。未定义变量是声明变量但不初始化变量的变量。NULL用于表示尚未存在的对象。(typeof运算符将返回对象为空值)。如果函数或方法返回的对象,当对象没有找到,回报通常是空的。

3.1.4、未定义的类型

未定义的类型只有一个值,即未定义的。当声明的变量未初始化时,变量的默认值是未定义的。

Var oTemp;



上面的代码行声明的变量otemp没有初始值的变量将被赋予一个值定义的,即对未定义的类型的字面量。下面的代码段可以用来测试是否该变量的值等于未定义:



Var oTemp;
警报(otemp = =定义的结果是:+(otemp = =不明)); / /输出真



运行结果:
U3000 U3000

运行结果显示

你可以使用typeof运算符显示数据类型的变量表示的是未定义的类型





Var oTemp;
警报(类otemp结果是:+、otemp定义); / /输出




价值的定义不同于未定义的值。然而,typeof运算符并不真正区分这两个值之间。考虑下面的代码:



Var oTemp;
警报(otemp otemp类型变量的声明,其结果是:+、otemp定义); / /输出
警报(otemp型otemp变量没有声明,其结果是:+、otemp定义); / /输出




运行结果:


这两个变量的输出都是未定义如果比其他类型的用于otemp2其他运营商,这将导致错误,因为其他运营商只能用于声明变量。



下面的代码将导致错误:




Var oTemp;
警报(otemp = =定义); / / 'otemp'is没有定义


当函数没有确切的返回值时,返回值为未定义。


功能testfunc(){
这是一个空函数,没有返回值。
}
警报(testfunc)=未定义的(结果:+(testfunc)=(定义)); / /输出真


运行结果:
U3000 U3000

3.2。引用数据类型

Javascript是指存储在堆内存中的数据类型。Javascript不允许直接访问堆内存空间中的位置和操作内存空间。它只能处理堆栈内存中的对象,所以堆栈内存中的数据引用类型实际上是堆内存中对象的引用地址。

请看下面的例子:



var obj =新的对象();
var obj = obj;
obj.name =独狼;
警报(对象名称); / /孤独的保鲁夫





运行结果:
U3000 U3000

从上面的例子中,我们声明一个引用数据类型变量,以此,并将它分配给另一个引用数据类型变量,obj2。当我们添加一个名称属性和obj2将骄傲的狼,以此也有相同名称的属性作为obj2。说明两种引用数据类型的变量点对同一object.obj1指定obj2,但实际上复制对象的引用地址在栈内存obj2,但实际上是指向相同的对象在堆内存。

下面让我们展示引用的数据类型分配过程。
U3000 U3000 U3000 U3000

当然,添加name属性obj2实际上是添加name属性在堆内存的对象。obj2和obj1仅仅存储在堆栈内存堆内存对象的引用地址,虽然这是一个复制品,但对象是相同的。因此,obj2的变化引起的变化,以此。

一般来说,基本的数据类型是由固定数量的字节组成的,这些字节可以在解析器操作中较低,比如数字和布尔;和引用数据类型,可以包含任意数量的属性和元素,所以它们不喜欢基本的数据类型,所以很容易操作。

因为引用的数据类型的值会发生变化,所以传递与基本数据类型相同的值的方法是没有意义的,因为它涉及到大量的内存复制和比较,而且效率太低,所以引用数据类型是通过引用传递模式传递的,实际传输只是对象的地址。

例如,数组和函数,因为它们都是特殊对象,所以它们都是引用类型。虽然基本类型可以添加属性或错误报告,但在添加测试后无法访问。