JavaScript(js)

ECMA-----定义的基础语法

DOM------document  object  model

BOM------Browser  object  model

Javasript 基于对象的,也是面向对象

ECMAScript描述了以下内容:

语法

类型

语句

关键字

保留字

运算符

对象(封装 继承 多态)基于对象的语言 使用对象

JavaScript的引入方式

  1. 直接编写:
  2. <script>
  3. alert(123)
  4. </script>
  5.  
  6. 导入文件
  7. <script src="index.js"></script>

JavaScript的基础

1 变量

js是一门相当随便的语言,是一门弱类型语言。

在JavaScript中,这些字母被称为变量。

0变量是弱类型的(很随便);

1、声明变量时不用声明变量类型,全部使用var关键字;

var a:

2、一行可以声明多个变量,并且可以是不同类型

var name="yuan",age=18,sex="male";

3、(了解)声明变量时,可以不用var.如果不用var 那么它是全局变量。

4、变量命名,首字符只能是字母,下划线,$美元符 三选一,且区分大小写,x与X是两个变量

5、变量还应遵守以下某条著名的命名规则:

var myFirstValue="123";
var MyFirstValue="123";

在以Pascal标记法命名的变量前附加一个小写字母(或小写字母序列),说明该变量的类型。例如,

i表示整数,s表示字符串,如下所示。

var iMyFirstValue=123

2 基础规范

  1. 1、每行结束可以不加分号.没有分号会以换行符作为每行的结束
  2. a=1;b=2;
  3. a=1 b=2;------错误
  4.  
  5. a=1
  6. b=2
  7.  
  8. //推荐
  9. a=1;
  10. b=2;
  11.  
  12. {
  13. a=1;
  14. b=2;
  15. //推荐加tab
  16. a=1;
  17. b=2;
  18. }

2、注释 支持多行注释和单行注释 /* */   //

3、使用{}来封装代码块

3 常量和标识符 

常量:直接在程序中出现的数据值

标识符:

1、不以数字开头的字母、数字、下划线(_)、美元符号($)组成

2、常用于表示函数、变量等的名称

3、例如:_abc,$abc,abc,abc123是标识符,而1abc不是

4、JavaScript语言中代表特定含义的词成为保留字,不允许程序再定义为标识符

 

4 数据类型

4.1 数字类型(Number)

简介

最基本的数据类型

不区分整型数值和浮点型数值

所有数字都采用64位浮点格式存储,相当于Java和c语言中double格式

  1. 能表示的最大值是±1.7976931348623157 x 10308
  1. 能表示最小的值是±5 x 10 -324
  1. 整数:
  1.          JavaScript10进制的整数由数字的序列组成
  1.        精确表达的范围是-9007199254740992 (-253) 9007199254740992 (253)
  2.          超出范围的整数,精确度将受影响
  1. 浮点数:
  1.         使用小数点记录数据
  1.       例如:3.4 5.6
  1.       使用指数记录数据
  1.        例如:4.3e23 = 4.3 x 1023
  1. 16进制和8进制数的表达
  1.        16进制数据前面加上0x,八进制前面加0
  2.        16进制数是由0-9,A-F16个字符组成
  3.         8进制数由0-78个数字组成
  4.         16进制和8进制与2进制的换算
  1. # 2进制: 1111 0011 1101 0100 <-----> 16进制:0xF3D4 <-----> 10进制:62420
  2. # 2进制: 1 111 001 111 010 100 <-----> 8进制:0171724

4.2 字符串(string)

简介

是由Unicode字符、数字、标点符号组成的序列

字符串常量首尾由单引号或双引号括起

JavaScript中没有字符类型

常用特殊字符在字符串中的表达

字符串中部分特殊字符必须加上又划线\

常用的转义字符 \n:换行  \’:单引号  \":双引号  \\:右划线

String数据类型的使用

特殊字符的使用方法和效果

Unicode的插入方法

  1. <script>
  2. var str="\u4f60\u597d\n欢迎来到\"JavaScript世界\"";
  3. console.log(str);
  4. </script>

4.3 布尔型(Boolean)

简介

Boolean类型仅有两个值:true和false,也代表1和0,世纪运算中true=1,false=0

布尔值也可以看作on/off、yes/no、1/0对应true/false

Boolean值主要用于JavaScript的控制语句,例如

  1. <script>
  2. if (2>1){
  3. console.log(false+1)
  4. }
  5.  
  6. if (2>1){
  7. console.log(ftrue)
  8. }
  9.  
  10. </script>

4.4 Null&Undefined

Undefined 类型

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

当函数无明确返回值时,返回的也是值“undefined”

  1. <script>
  2. var a;
  3. console.log(a); #undefined
  4. console.log(typeof a); #undefined
  5. </script>

Null类型

另一种只有一个值的类型是Null,它只有一个专用值null,即它的字面量。值undefined实际上是从值null派生来的,因此 ECMAScript 把它们定义为相等的

尽量这两个值相等,但它们的含义不同。undefined是声明了变量但未对其初始化时赋予该变量的值,null则用于表示尚未存在的对象,如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是null

var person=new Person()   关键字 new 实例化一个对象

var person=null 代表的空对象

基本数据类型

  1. <script>
  2. var n=5;
  3. var s ="hello";
  4. var b =false;
  5.  
  6. console.log(typeof n); #number
  7. console.log(typeof s); #string
  8. console.log(typeof b); #boolean
  9. </script>

数据类型转换

JavaScript属于松散类型的程序语言

变量在声明的时候并不需要指定数据类型

变量只有在赋值的时候才会确定数据类型

表达式中包含不同类型数据则在计算过程中会强制进行类型转换

数字+字符串:数字转换成字符串

  1. <script>
  2. var s =12+"hello";
  3. console.log(s);
  4. console.log(typeof s);
  5. </script>
  6. #12hello
  7. #string

数字+布尔值:true转换为1,false转换为0

  1. <script>
  2. var s1=true +1;
  3. console.log(s1);
  4. console.log(typeof s1);
  5. </script>
  6. #2
  7. #number

字符串+布尔值:布尔值转换为字符串true或false

  1. <script>
  2. var s1=true+"hello";
  3. console.log(s1);
  4. console.log(typeof s1);
  5. </script>
  6. #truehello
  7. #string

强制类型转换函数

函数parseINT:强制转换成整数 例如:

console.log(parseInt( "6.12"));  #6
console.log(parseInt( "12a"));  #12

函数parseFloat:强制转换成浮点数

console.log(parseFloat("6.12"));  #6.12

函数eval: 将字符串强制转换为表达式并返回结果 eval("1+1")=2 ; eval("1<2")=true

NaN:当涉及数据转换成数字时得不到结果。

类型查询函数(typeof)

console.log(typeof "test"+3);  #string

console.log(typeof null);   #object

5 ECMAScript运算符

5.1 算数运算符

加(+)、 减(-)、 乘(*) 、除(/) 、余数(% )  加、减、乘、除、余数和数学中的运算方法一样  例如:9/2=4.5,4*5=20,9%2=1

-除了可以表示减号还可以表示负号  例如:x=-y

+除了可以表示加法运算还可以用于字符串的连接  例如:"abc"+"def"="abcdef"

5.2 递增(++)、递减(--)

自加自减   先引用在赋值i++(先引用在计算)

  1. <script>
  2. var ret;
  3. ret=i++; // i=i+1
  4. console.log(ret);
  5. console.log(i);
  6. ++i 先赋值在引用 (先计算在引用)
  7. console.log(++i);
  8. console.log(i);
  9. </script>

  

  1. <script>
  2. var d="hello";
  3. var a=+d; #转换成正整数
  4. console.log(a); #NaN
  5. console.log(typeof a); #number
  6. //NaN 与谁做比较都是false 除了!=
  7. console.log(a>3);//false
  8. console.log(a<3);//false
  9. console.log(a==3);//false
  10. console.log(a==NaN);//false
  11. console.log(a!=NaN);//true
  12. </script>  

5.2 逻辑运算符

  1. 等于 ( == ) 、不等于( != ) 大于( > ) 小于( < )大于等于(>=) 、小于等于(<=)
  2. (&&) 、或(||) 、非(!)
  3. 1 && 1 = 1 1 || 1 = 1
  4. 1 && 0 = 0 1 || 0 = 1
  5. 0 && 0 = 0 0 || 0 = 0
  6.  
  7. !0=1
  8. !1=0
  9.  
  10. console.log(2==""); //true 因为已经做过数据转换
  11. console.log(2===""); //false
  12. console.log(2===2); //true 

5.2.1 逻辑AND运算符(&&)

逻辑AND运算的运算数可以是任何类型的,不止是Boolean值。

如果某个运算符不是原始的Boolean型值,逻辑AND运算并不一定返回Boolean值:

如果某个运算数是null,返回null

如果某个运算数是NaN,返回NaN

如果某个运算数是undefined,返回undefined

5.2.2 逻辑OR运算符(||)

  1. 与逻辑AND运算符相似,如果某个运算数不是Boolean值,逻辑OR运算并不一定返回Boolean值;
  2. 赋值 =
  3. JavaScript中=代表赋值,两个等号==表示判断是否相等
  4. 例如,x=1表示给x赋值为1
  5. if (x==1){...}程序表示当x1相等时
  6. if(x==“on”){…}程序表示当x与“on”相等时
  7. 配合其他运算符形成的简化表达式
  8. 例如i+=1相当于i=i+1x&=y相当于x=x&y
  9. console.log(2=="");//true
  10. console.log(2==="");//false
  11. console.log(2===2);//true
  12. console.log(4 !="");//false
  13. console.log(4 !=="");//true
  14.  
  15. var a = 2; //0001
  16. var b = 4; //0001
  17. var c1 = a<b | --b>--a; //1 // 位运算
  18. var c2 = a<b || --b>--a; //true
  19. var c3 = a<b &&--b>--a; //true
  20. var c4 = a<b & --b>--a;//1 位运算

5.2.3 关系运算符(重要)

  1. 最高位做比较(按照ASSIC码代码)
  2. console.log(""<""); //true
  3. //两个运算都是字符串,所以比较的是它们的字符代码(""的字符代码是50,
  4. // ""的字符代码是51)
  5. console.log("Blue"<"alpha"); //true
  6. //字母B的字符代码是66,字母a的字符代码是97
  7. console.log(""<3); //false
  8. //字符串""将被转换成数字25,然后与数字3进行比较,就是false
  9. //总结:比较运算符两侧如果是一个数字类型,一个是其他类型,会将类型转换成数字类型
  10. // 比较运算符两侧如果都是字符串类型,比较的是最高位的asc码,如果最高位相等,继
  11. 续取第二位比较

5.2.4 Boolean运算符(重要)

  1. var temp=new Object();// false;[];0; null; undefined;object(new Object();)
  2.  
  3. if(temp){
  4. console.log("yuan")
  5. }else {
  6. console.log("alex")
  7. }

6 if 控制语句  

  1. if-else基本格式
  2. if (表达式){
  3. 语句1;
  4. ......
  5. }else{
  6. 语句2;
  7. .....
  8. }
  9. 功能说明
  10. 如果表达式的值为true则执行语句1,
  11. 否则执行语句2

  1. #第一种:
  2. if(2>1){
  3. console.log("success!")
  4. }else {
  5. console.log("failure")
  6. }
  7.  
  8. 第二种:
  9. var x=(new Date()).getDate();
  10. //获取今天的星期值,0为星期天
  11. var y;
  12. if ((x==6) || (x==0)){
  13. y="周末"
  14. }else {
  15. y="工作日";
  16. }
  17.  
  18. //等价于
  19.  
  20. y="工作日";
  21. if ( (x==6) || (x==0) ) {
  22. y="周末";
  23. }
  24.  
  25. //console.log(x); //当天时间 23日
  26. console.log(y) // 工作日

 

if 可以单独使用

  1. if语句嵌套格式
  2. if (表达式1) {
  3. 语句1;
  4. }else if (表达式2){
  5. 语句2;
  6. }else if (表达式3){
  7. 语句3;
  8. } else{
  9. 语句4;
  10. }

  1. if (x==1){
  2. y="星期一";
  3. }else if(x==2){
  4. y="星期二";
  5. }else if (x==6){
  6. y="星期六";
  7. }else if (x==0){
  8. y="星期日";
  9. }else {
  10. y="未定义";
  11. }

7 switch 选择控制语句

  1. switch基本格式
  2. switch (表达式) {
  3. case 1:语句1;break;
  4. case 2:语句2;break;
  5. case 3:语句3;break;
  6. default:语句4;
  7. }

  1. x=3;
  2. switch(x){
  3. case 0:console.log("星期一"); break;
  4. case 1:console.log("星期二"); break;
  5. case 2:console.log("星期三"); break;
  6. case 3:console.log("星期四"); break;
  7. case 4:console.log("星期五"); break;
  8. case 5:console.log("星期六"); break;
  9. case 6:console.log("星期日"); break;
  10. default: console.log("未定义");
  11. }

优点:结构更加清晰,使程序可读性更强,效率更高。

switch-case只将表达式计算一次,然后将表达式的值与每个case的值比较,进而选择执行哪一个case的语句块 

8 for循环控制语句

  1. for循环基本格式
  2. for (初始化;条件;增量){
  3. 语句1;
  4. ...
  5. }
  6. 功能说明
  7. 实现条件循环,当条件成立时,执行语句1,否则跳出循环体

  1. 计算1+2+3....100的值
  2. sum=0;
  3. for( var i=1;i<=100;i++){
  4. sum=sum+i
  5.  
  6. }
  7. alert(sum)
  8. // 计算1-2-3....100的值
  9. sum=0;
  10. for(var i=1;i<=100;i++){
  11. sum=sum-i
  12. }
  13. alert(sum)
  14.  
  15. for(var i= 0;i<7;i++){
  16. document.write("<h1>hello"+i+"</h1>") //字符串拼接 输入到文档屏幕上
  17.  
  18. 数组:
  19. s=[12,"yuan",true,3.14];
  20. console.log(s);
  21. console.log(typeof s);
  22.  
  23. //[12,"yuan",true,3.14];
  24. //object

9 while循环控制语句

  1. while循环基本格式
  2. while (条件){
  3. 语句1
  4. ...
  5. }
  6. 功能说明
  7. 运行功能和for类似,当条件成立循环执行语句花括号{}内的语句,否则跳出循环

  1. var i =1;
  2. while (i<=10){
  3. document.write("<h1>hello+i"+"</h>");
  4. i++
  5. }

10 异常处理

  1. try {
  2. console.log(“hello”);
  3. //这段代码从上往下运行,其中任何一个语句抛出异常该代码块就结束运行
  4. }
  5. catch (e) {
  6. console.log(e);
  7. // 如果try代码块中抛出了异常,catch代码块中的代码就会被执行。
  8. //e是一个局部变量,用来指向Error对象或者其他抛出的对象
  9. }
  10. finally {
  11. console.log(finally);
  12. //无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中始终会被执行。
  13. }

注:主动抛出异常 throw Error('xxxx')  

JavaScript(js)/上的更多相关文章

  1. atitit.javascript js 上传文件的本地预览

    atitit.javascript js 上传文件的本地预览 1. .URL.createObjectURL  1 1.1. 吊销所有使用 URL.createObjectURL 而创建的 URL,以 ...

  2. 几款极好的 JavaScript 文件上传插件

    文件上传功能作为网页重要的组成部分,几乎无处不在,从简单的单个文件上传到复杂的批量上传.拖放上传,需要开发者花费大量的时间和精力去处理,以期实现好用的上传功能.这篇文章向大家推荐几款很棒的 JavaS ...

  3. javascript(js)小数精度丢失的解决方案

    原因:js按照2进制来处理小数的加减乘除,在arg1的基础上 将arg2的精度进行扩展或逆扩展匹配,所以会出现如下情况. javascript(js)的小数点加减乘除问题,是一个js的bug如0.3* ...

  4. 【精心推荐】几款极好的 JavaScript 文件上传插件

    文件上传功能作为网页重要的组成部分,几乎无处不在,从简单的单个文件上传到复杂的批量上传.拖放上传,需要开发者花费大量的时间和精力去处理,以期实现好用的上传功能.这篇文章向大家推荐几款很棒的 JavaS ...

  5. 【转】关于URL编码/javascript/js url 编码/url的三个js编码函数

    来源:http://www.cnblogs.com/huzi007/p/4174519.html 关于URL编码/javascript/js url 编码/url的三个js编码函数escape(),e ...

  6. js 上传文件后缀名的判断 var flag=false;应用

    js 上传文件后缀名的判断  var flag=false;应用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// ...

  7. paip.java 以及JavaScript (js) 的关系以及区别

    paip.java 以及JavaScript (js) 的关系以及区别 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http:// ...

  8. 关于URL编码/javascript/js url 编码/url的三个js编码函数

    关于URL编码/javascript/js url 编码/url的三个js编码函数escape(),encodeURI(),encodeURIComponent() 本文为您讲述关于js(javasc ...

  9. js 上传下载(留着备用)

      js 上传下载(留着备用) 下载文件 1. <a href="#" onClick="download()">下载文件</a>  & ...

随机推荐

  1. FNV算法实战

    HASH算法介绍 Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长 ...

  2. ASP.NET Core Web 支付功能接入 微信-扫码支付篇

    这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入微信-扫码支付及异步通知功能. 开发环境:Win 10 x64.VS2017 15.6.4..NET Core SDK ...

  3. poj-1045(数学不好怪我咯)

          Description Consider the AC circuit below. We will assume that the circuit is in steady-state. ...

  4. java开源安全框架-------Apache Shiro--第一天

    1.1.简介 Apache Shiro 是Java的一个安全框架.目前使用Apache Shiro 的人越来越多,因为它相当简单,对比Spring Security,可能没有没有Spring Secu ...

  5. 使用 win10 的正确姿势 (第二版)

    文章为本人原创,转载请注明出处,谢谢. 17年9月初,写了第一篇<使用 win10 的正确姿势>,而现在半年多过去,文章更新了一些,主要是桌面的变化. 一. 重新定义桌面 我的桌面: 将桌 ...

  6. Comparable接口和Comparator接口

    1.一个类在设计之初就要实现对该类对象的排序功能,那么这个类要实现Comparable接口,实现public int compareTo(T t)方法.如代码中的Student类.对于实现Compar ...

  7. 【详细】总结JavaWeb开发中SSH框架开发问题(用心总结,不容错过)

    在做JavaWeb的SSH框架开发的时候,遇到过很多的细节问题,这里大概记录下 我使用的IDE是Eclipse(老版本)三大框架:Spring4.Struts2.Hibernate5 1.web.xm ...

  8. 四则运算----C++版

    一.设计思想 因java中已做过,就是简单的将java中的语句调换为C++的语句. 二.代码 #include<iostream.h> #include<Stdlib.h> v ...

  9. Python处理图片缩略图

    CPU 密集型任务和 IO 密集型任务分别选择多进程multiprocessing.Pool.map 和多线程库multiprocessing.dummy.Pool.map import os imp ...

  10. mongodb 集群分片

    分片 在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求 当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量,这 ...