javascript初识

javascript初识

1,什么是javascript?

javascript定义了网页的行为,
广义的JavaScript=ECMAScript+DOM+BOM

 ECMAScript,提供核心语言功能;
 文档对象模型(DOM),提供访问和操作网页内容的方法和接口;
 浏览器对象模型(BOM),提供与浏览器交互的方法和接口。

2,在HTML 中使用Javascript

1,< script >元素

  • async:可选.表示应该先下载脚本,不妨碍页面中其他操作,只对外部脚本文件有效
  • charset:可选.表示脚本可以延迟到文档完全解析后和显示后再执行。只对外部脚本有效
  • src:可选。表示包含要执行代码的外部文件。

2,引入方式

使用< script>元素的方式有两种:直接在页面中嵌入 JavaScript 代码和包含外部 JavaScript文件
示例:

1.<script type="text/javascript"> 
 function sayHi(){ 
 alert("Hi!"); 
 } 
</script>
2.<script type="text/javascript" src="example.js"></script>

嵌入外部文件时< script>标签之间的代码会被忽略
< script>元素嵌入在< head>之间会导致网页加载时有一段子空白阶段,为防止这种情况,一般把< script>放在< body>元素最后
1.延迟脚本
为< script>标签定义了 defer 属性。这个属性的用途是表明脚本在执行时不会影响页面的构造。也就是说,脚本会被延迟到整个页面都解析完毕后再运行。

<!DOCTYPE html> 
<html> 
 <head> 
 <title>Example HTML Page</title> 
 <script type="text/javascript" defer="defer" src="example1.js"></script> 
 <script type="text/javascript" defer="defer" src="example2.js"></script> 
 </head> 
 <body> 
 <!-- 这里放内容 --> 
 </body> 
</html>

在这个例子中,虽然我们把< script>元素放在了文档的< head>元素中,但其中包含的脚本将延迟到浏览器遇到< /html>标签后再执行
2,异步脚本
与defer属性相似,指定 async 属性的目的是不让页面等待两个脚本下载和执行,从而异步加载页面其他内容,但与 defer
不同的是,标记为 async 的脚本并不保证按照指定它们的先后顺序执行。

<!DOCTYPE html> 
<html> 
 <head> 
 <title>Example HTML Page</title> 
 <script type="text/javascript" async src="example1.js"></script> 
 <script type="text/javascript" async src="example2.js"></script> 
 </head> 
 <body> 
 <!-- 这里放内容 --> 
 </body> 
</html> 

XHTML 文档中,要把 async 属性设置为 async=“async”

JavaScript数据类型

1.Undefined类型

Undefined 类型只有一个值,即特殊的 undefined。在使用 var 声明变量但未对其加以初始化时,这个变量的值就是 undefined,

var message; 
alert(message == undefined); //true

:对未初始化的变量执行 typeof 操作符会返回 undefined 值,而对未声明的变量执行 typeof 操作符同样也会返回 undefined 值。

var message; // 这个变量声明之后默认取得了 undefined 值
// 下面这个变量并没有声明
// var age 
alert(typeof message); // "undefined" 
alert(typeof age); // "undefined"
2.Null类型

Null 类型是第二个只有一个值的数据类型,这个特殊的值是 null。从逻辑角度来看,null 值表示一个空对象指针,这也正是使用 typeof 操作符检测 null 值时会返回"object"的原因

var car = null; 
alert(typeof car); // "object"

undefined 值是派生自 null 值的,因此 ECMA-262 规定对它们的相等性测试要返回 true:
alert(null == undefined); //true

3.Boolean类型

Boolean 类型是 ECMAScript 中使用得最多的一种类型,该类型只有两个字面值:true 和 false。这两个值与数字值不是一回事,因此 true 不一定等于 1,而 false 也不一定等于 0.

数据类型转换为true的值转换为false的值
Booleantruefalse
String任何非空字符串“”(空字符串)
Number任何非零数字值(包括无穷大)0和NaN(参见本章后面有关NaN的内容)
Object任何对象null
Undefined\undefined
4.Number类型

Number 类型应该是 ECMAScript 中最令人关注的数据类型了,这种类型使用 IEEE754 格式来表示整数和浮点数值
最基本的数值字面量格式是十进制整数,十进制整数可以向下面那样直接在代码中输入
除了十进制表示外,还可以通过八进制和十六进制来表示。其中,八进制字面值得第一位必须是0,( 16进制是0x)然后是八进制数字序列(0~7)。如果后接的字面值超出范围,则前面的导零失效,后面的值将被当做十进制数值解析。

var a=065;  //八进制的53
var b=085;   //85
var c=08;  //8
  • NaN
    NaN,即非数值(Not a Number)是一个特殊的值。在ES中,任何数值除以非数值会返回NaN。首先,任何涉及NaN的操作(NaN/10)都会返回NaN。其次,NaN与任何值都不相等,包括NaN本身。

数值转换

  • 如果是 Boolean 值,true 和 false 将分别被转换为 1 和 0。  如果是数字值,只是简单的传入和返回。
  • 如果是 null 值,返回 0。  如果是 undefined,返回 NaN。  如果是字符串,遵循下列规则:
  • 如果字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值,即"1"
    会变成 1,"123"会变成 123,而"011"会变成 11(注意:前导的零被忽略了);
  • 如果字符串中包含有效的浮点格式,如"1.1",则将其转换为对应的浮点数值(同样,也会忽
    略前导零);
  • 如果字符串中包含有效的十六进制格式,例如"0xf",则将其转换为相同大小的十进制整
    数值;
  • 如果字符串是空的(不包含任何字符),则将其转换为 0;  如果字符串中包含除上述格式之外的字符,则将其转换为 NaN。  如果是对象,则调用对象的 valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是 NaN,则调用对象的 toString()方法,然后再次依照前面的规则转换返回的字符串值。
5.String类型

String 类型用于表示由零或多个 16 位 Unicode 字符组成的字符序列,即字符串。字符串可以由双引号(")或单引号(’)表示,因此下面两种字符串的写法都是有效的:

var firstName = "Nicholas"; 
var lastName = 'Zakas';

对字符串进行加法运算即将字符串进行拼接
用toString()方法将其他类型转换为字符串类型
转型函数 String():

  • 如果值有 toString()方法,则调用该方法(没有参数)并返回相应的结果;
  • 如果值是 null,则返回"null";
  • 如果值是 undefined,则返回"undefined"。
6.Object类型

ECMAScript 中的对象其实就是一组数据和功能的集合。对象可以通过执行 new 操作符后跟要创建的对象类型的名称来创建。而创建 Object 类型的实例并为其添加属性和(或)方法,就可以创建自定义对像。

var o = new Object();
var o = new Object;//可以,但不推荐

操作符:

数学运算符
+、-、、/、%(取余)
+=、-=、
=、/=、%=
++、- -
作用同C语言中
逻辑运算符
1、JS逻辑与运算符
格式 A&&B
如果 A的值为真,那么就返回B的值
如果A的值为假,返回A的值。
0、""、null、false、undefined、NaN都会判为false,其他都为true
2、JS逻辑或运算符
格式 A||B
如果 A的值为真,那么就返回A的值
如果A的值为假,返回B的值。
3、逻辑非运算!
!A 如果A为真就变成假,如果是假就变成真
比较运算符
=:赋值;
==:判断是否相等(变量类型可以不相等,会隐式转换)
===:判断全等(变量类型也要相等)
位运算符

有符号的右移操作符由两个大于号(>>)表示,这个操作符会将数值向右移动,但保留符号位(即正负号标记)

无符号右移操作符由 3 个大于号(>>>)表示,这个操作符会将数值的所有 32 位都向右移动。对正数来说,无符号右移的结果与有符号右移相同,无符号右移操作符会把负数的二进制码当成正数的二进制码。而且,由于负数以其绝对值的二进制补码形式表示,因此就会导致无符号右移后的结果非常之大

var oldValue = -64; // 等于二进制的 11111111111111111111111111000000 
var newValue = oldValue >>> 5; // 等于十进制的 134217726

左移操作符由两个小于号(<<)表示,这个操作符会将数值的所有位向左移动指定的位数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值