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的变化引起的变化,以此。
一般来说,基本的数据类型是由固定数量的字节组成的,这些字节可以在解析器操作中较低,比如数字和布尔;和引用数据类型,可以包含任意数量的属性和元素,所以它们不喜欢基本的数据类型,所以很容易操作。
因为引用的数据类型的值会发生变化,所以传递与基本数据类型相同的值的方法是没有意义的,因为它涉及到大量的内存复制和比较,而且效率太低,所以引用数据类型是通过引用传递模式传递的,实际传输只是对象的地址。
例如,数组和函数,因为它们都是特殊对象,所以它们都是引用类型。虽然基本类型可以添加属性或错误报告,但在添加测试后无法访问。