JavaScript(js)/上

JavaScript(js)

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

DOM------document  object  model

BOM------Browser  object  model

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

ECMAScript描述了以下内容:

语法

类型

语句

关键字

保留字

运算符

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

JavaScript的引入方式

直接编写:
<script>alert(123)
</script>导入文件
<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、每行结束可以不加分号.没有分号会以换行符作为每行的结束
a=1;b=2;
a=1 b=2;------错误a=1
b=2//推荐
a=1;
b=2;{a=1;b=2;//推荐加taba=1;b=2;
}

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

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

3 常量和标识符 

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

标识符:

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

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

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

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

 

4 数据类型 

4.1 数字类型(Number)

简介

最基本的数据类型

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

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

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

4.2 字符串(string)

简介

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

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

JavaScript中没有字符类型

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

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

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

 

String数据类型的使用

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

 Unicode的插入方法

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

4.3 布尔型(Boolean)

简介

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

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

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

<script>if (2>1){console.log(false+1)
}if (2>1){console.log(ftrue)
}</script>

4.4 Null&Undefined

Undefined 类型

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

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

<script>
var a;
console.log(a);        #undefined
console.log(typeof a);  #undefined
</script>

Null类型

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

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

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

var person=null 代表的空对象

基本数据类型

<script>
var n=5;
var s ="hello";
var b =false;console.log(typeof n);  #numberconsole.log(typeof s);  #stringconsole.log(typeof b);  #boolean
</script>

数据类型转换

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

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

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

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

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

<script>
var s =12+"hello";
console.log(s);
console.log(typeof s);
</script>
#12hello
#string

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

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

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

<script>
var s1=true+"hello";
console.log(s1);
console.log(typeof s1);
</script>
#truehello
#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++(先引用在计算)

<script>
var ret;
ret=i++;   // i=i+1
console.log(ret);
console.log(i);
++i 先赋值在引用  (先计算在引用)console.log(++i);console.log(i);
</script>

  

<script>
var d="hello";var a=+d; #转换成正整数console.log(a);        #NaNconsole.log(typeof a);  #number//NaN 与谁做比较都是false  除了!=console.log(a>3);//falseconsole.log(a<3);//falseconsole.log(a==3);//falseconsole.log(a==NaN);//falseconsole.log(a!=NaN);//true
</script>  

5.2 逻辑运算符

等于 ( == )  、不等于( != ) 、 大于( > ) 、 小于( < ) 
大于等于(>=) 、小于等于(<=)
与 (&&) 、或(||) 、非(!)
1 && 1 = 1  1 || 1 = 1
1 && 0 = 0  1 || 0 = 1
0 && 0 = 0  0 || 0 = 0!0=1
!1=0console.log(2=="2"); //true   因为已经做过数据转换
console.log(2==="2"); //false
console.log(2===2); //true 

5.2.1 逻辑AND运算符(&&)

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

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

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

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

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

5.2.2 逻辑OR运算符(||) 

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

5.2.3 关系运算符(重要)

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

5.2.4 Boolean运算符(重要)

var temp=new Object();// false;[];0; null; undefined;object(new Object();)if(temp){console.log("yuan")
}else {console.log("alex")
}

6 if 控制语句  

   if-else基本格式
if (表达式){
语句1;
......
}else{
语句2;
.....
}
功能说明
如果表达式的值为true则执行语句1,
否则执行语句2

 

#第一种:
if(2>1){console.log("success!")
}else {console.log("failure")
}第二种:
var x=(new Date()).getDate();
//获取今天的星期值,0为星期天
var y;
if ((x==6) || (x==0)){y="周末"
}else {y="工作日";
}//等价于y="工作日";
if ( (x==6) || (x==0) ) {
y="周末";
}//console.log(x);  //当天时间 23日console.log(y)  // 工作日  
View Code 

if 可以单独使用

if语句嵌套格式
if (表达式1) {语句1;
}else if (表达式2){语句2;
}else if (表达式3){语句3;
} else{语句4;
}

 

if (x==1){y="星期一";
}else if(x==2){y="星期二";
}else if (x==6){y="星期六";
}else if (x==0){y="星期日";
}else {y="未定义";
}
View Code

 

7 switch 选择控制语句

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

 

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

 

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

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

8 for循环控制语句

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

 

计算1+2+3....100的值sum=0;for( var i=1;i<=100;i++){sum=sum+i}alert(sum)
// 计算1-2-3....100的值sum=0;for(var i=1;i<=100;i++){sum=sum-i
}alert(sum)for(var i= 0;i<7;i++){document.write("<h1>hello"+i+"</h1>") //字符串拼接 输入到文档屏幕上数组:
s=[12,"yuan",true,3.14];
console.log(s);
console.log(typeof s);//[12,"yuan",true,3.14];
//object
View Code

9 while循环控制语句

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

 

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

10 异常处理

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

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

转载于:https://www.cnblogs.com/niejinmei/p/6896684.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ap6212 Linux 蓝牙,替代正基AP6212、AP6330的SDIO WiFi+UART蓝牙组合

原标题&#xff1a;替代正基AP6212、AP6330的SDIO WiFiUART蓝牙组合SKYLAB推出的SDIO wifi串口蓝牙二合一模块WG221&#xff0c;可完全替代正基的WiFi蓝牙二合一模块AP6212和AP6330两个型号。WG221是WiFi和蓝牙二合一的组合解决方案模块&#xff0c;支持1 x 1 802.11 a/b/g/n W…

2020十大最具创新性的AR/VR开发与应用公司

来源&#xff1a; 资本实验室 在经历过去几年的热情高涨与资本蜂拥之后&#xff0c;AR与VR技术正在进入波澜不惊的发展时期&#xff0c;多家曾经风光一时的AR与VR初创企业都已成为昨日黄花。例如&#xff0c;昔日的独角兽&#xff0c;最受瞩目的AR公司Magic Leap一直受裁员、高…

关于直播学习笔记-005-nginx-rtmp-win32在Win10上使用

在Win10上使用nginx-rtmp-win32会提示文件路径问题。 可以将nginx-rtmp-win32拷贝到用户目录文件夹之中。 在命令行中执行nginx.exe程序 转载于:https://www.cnblogs.com/defineconst/p/6899720.html

连筋字体在线生成_四个超实用的字体网站,PPT和海报就靠它,收藏来一波

今天分享四个一键生成艺术字体的网站给你们&#xff0c;非常适合用到各种活动海报设计和PPT设计中。1、手写在线字体生成器这是一个专门生成手写字体的网站&#xff0c;比如毛笔字体、硬笔等手写字体。字体生成后也可以编辑文字的大小、颜色和背景。2、篆书在线生成器这是一个专…

用物理学突破深度学习理论瓶颈? Google-斯坦福发布《深度学习统计力学》综述论文,30页pdf阐述深度学习成功机制...

来源&#xff1a;专知【导读】深度学习革新了很多应用&#xff0c;但是背后的理论作用机制一直没有得到统一的解释。最近来自谷歌大脑和斯坦福的学者共同在Annual Review of Condensed Matter Physics 发布了深度学习统计力学的综述论文《Statistical Mechanics of Deep Learni…

软件工程——团队作业2

组长&#xff1a; 马海花 1500802002 组员&#xff1a;王莉娟 1500802028 安梨雅 1500802039 马晓燕 1500802046 马菊瑞 1500802066 马继娴 1500802081 NABCD模型&#xff1a; &#xff08;1&#xff09;N&#xff08;Need 需求&#xff09; 1.学生可以通过网络&#xff0c;随…

【智能驾驶】数字钥匙打开汽车安全潘多拉磨盒,2019年智能网联汽车发生“十大安全事件”...

来源&#xff1a;AutoR智驾【导读】3月24日&#xff0c;360举办了一场线上发布会&#xff0c;正式发布了《2019智能网联汽车信息安全年度报告》&#xff0c;从智能网联汽车网络安全发展趋势、新兴攻击手段、汽车安全攻击事件、汽车安全风险总结和安全建设建议等方面对2019年智能…

stm32按键输入实验c语言,stm32f103学习笔记(三)按键输入(IO口输入)

学stm32第三天了&#xff0c;才学到按键输入&#xff0c;这进度也是醉了。。。谁叫俺c语言基础不行&#xff0c;还没有学过模数电呢。。开发板上有4个按键&#xff1a;key0&#xff0c;key1&#xff0c;key2和wk_up&#xff0c;分别接在PE4&#xff0c;PE3&#xff0c;PE2和PA0…

JMF调用摄像头粉屏的问题(win10 64位系统)

最近突然想做一个人脸识别的程序&#xff0c;图像的获取可以从本地或者摄像头获取。 1、从本地获取比较简单&#xff0c;不多说。 2、从摄像头获取图片。网上查了一下&#xff0c;都是用的JMF(但是JMF已经很久没有更新&#xff0c;而且只支持32位的JDK&#xff0c;如果知道有更…

科技部5个6G重点项目

来源&#xff1a;5G重要信息未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff08;城市&#xff09;云脑研究计划&#xff0c;构建互联网&#xff08;城市&#xff09;云脑技术和企业图…

mysqlsql怎么比较当前月与去年的这个月的同比_沃尔沃汽车8月全球销量同比增7.2% 中美两大地区领涨...

加入盖世行业交流群&#xff0c;请加微信(盖世汽车冬冬&#xff1a;gasgoo2015)出示名片&#xff0c;了解更多行业资讯盖世汽车讯 根据沃尔沃汽车官方发布的销量数据&#xff0c;今年8月份&#xff0c;得益于广受欢迎的SUV系列产品&#xff0c;该公司继续保持强劲的销售势头&am…

POI(java 操作excel,word等)编程

一、下载所需jar包 下载地址&#xff1a;http://poi.apache.org/download.html http://download.csdn.net/detail/likai22/534250 二、上代码 package com.sxdx.excelpoi.action;import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.File…

一文读懂测序技术在新冠病毒检测中的应用(文末附FAQ)

来源&#xff1a;生物探索随着世界疫情的发展&#xff0c;多个国家进入公共卫生紧急状态&#xff0c;全球科学家都在抓紧研究更好的检测、治疗、防控手段。从最初未知β属冠状病毒的快速鉴定到病毒序列的完整破译&#xff0c;再到病毒序列的变异监测&#xff0c;高通量测序技术…

2020技术趋势报告-中文版

来源&#xff1a;德勤咨询今年的技术趋势报告继续在开篇回顾了11年来的技术趋势发展&#xff0c;展示了技术趋势随时间推移的演进全过程&#xff0c;及最新宏观科技力量作为业务转型基础带来的共生效益&#xff0c;和不久的未来的新兴科技力量。随着企业需要适应不断变化的技术…

HBase:分布式列式NoSQL数据库

传统的ACID数据库&#xff0c;可扩展性上受到了巨大的挑战。而HBase这类系统&#xff0c;兼具可扩展性的同时&#xff0c;也提出了类SQL的接口。 HBase架构组成 HBase采用Master/Slave架构搭建集群&#xff0c;它隶属于Hadoop生态系统&#xff0c;由一下类型节点组成&#xff1…

LINUX装魂斗罗游戏,魂斗罗战甲1-支援形态装置搭配思路及攻略

哈喽&#xff0c;老伙计们大家好&#xff0c;虽然真魂战甲这个机制已经出了有段时间了&#xff0c;但是今天我还是要给大家搞一个深度攻略&#xff0c;别问&#xff01;问就是真男人必须开机甲&#xff01;其实是很多小伙伴向我吐槽血隼副本和虚空副本太过变态&#xff0c;自己…

好文 | “智能经济”时代,协作机器人的应用前景与趋势探讨

来源&#xff1a;赛迪顾问本文要点一、协作机器人定义及分类二、全球协作机器人发展概况三、中国协作机器人发展概况四、中国协作机器人发展面临瓶颈及趋势展望1、研发设计人才短缺&#xff0c;协作机器人产业创新驱动力不强2、核心零部件技术缺失&#xff0c;是制约我国工业机…

c语言求100以内整除13的最大,VB程序设计的一道题,找出100以内能被3整除的所有数之和,并把值保存在一维数组中...

VB程序设计的一道题&#xff0c;找出100以内能被3整除的所有数之和&#xff0c;并把值保存在一维数组中以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;VB程序设计的一道题&#xff0c;找出1…

兰德报告:思维机器时代的威慑

来源&#xff1a;中国指挥与控制学会从全球来看人工智能和自主系统在军事上的应用逐渐增多&#xff0c;这可能影响危机和冲突中使用的威慑策略以及冲突的升级变化。到目前为止&#xff0c;威慑主要指人类设法阻止其他人采取特定行动的行为。如果参与思维和决策过程的不止人类&a…

华为等向联合国提议重构互联网:提议采用一种新的核心网络技术新标准,名为“New IP”...

来源&#xff1a;云头条新架构将支持尖端技术&#xff0c;华为曾表示&#xff0c;新技术的一些部分已经在建造中&#xff0c;相关部分已准备好在2021年之前进行测试。以下为《演示文稿》&#xff1a;《金融时报》消息&#xff0c;中国已向联合国建议对互联网的运作方式进行彻底…