第二节 JavaScript基础
JavaScript组成及其兼容性:
ECMAScript:解释器,翻译,用于实现机器语言和高级语言的翻译器;几乎没有兼容性问题
DOM(Document Object Model):文档对象模型,文档就是HTML文档,它赋予了操作HTML的能力;有一些操作不兼容
BOM(Browser Object Model):浏览器对象模型,操作浏览器,起对象就是浏览器窗口。没有兼容性问题(完全不兼容),很少用,而且用户体验不是很好
变量类型:变量本身并没有类型,它的类型取决于该变量存储的数据的类型
查看数据类型:typeof运算符
常见类型:number、string、boolean、undefined、object、function;可用alert(typeof 变量名) 显示变量类型
注意:一个变量应该只存放一种类型的数据
类型转换:
var a=‘12’; //字符串类型
alert(parseInt(a)+5); //结果返回17,parseInt(a)表示强制转换(又称显式类型转换)
其实parseInt()是一个函数,如当a=‘12px34’时,强制转换后,a=12(整数类型),因为该函数直接扫描字符串,从第一个数字开始记录,当遇到非数字时,自动跳出循环,并把非数字后面的数字字符自动忽略,而只保留第一次遇到的数字字符串,并将其强制转换为整数型数字;当a=‘abd’,即变量字符串中没有数字,则alert(parseInt(a))会返回NaN(Not a Number),由此我们可用if(isNaN(a))进行判断,如果是“非数字”,则显示提示,否则正确运行;
同理的还有parseFloat(a); //把一个字符串转换成浮点型数字
隐式类型转换:==(先转换类型,然后比较)、===(不转换类型,直接比)、减法(因为“减法”在系统中只有“相减”这一种操作,所以机器会默然转换后,相减;而“加法”,可以用于字符串连接,以及转换成数字后“相加”,而机器会默认选择最简单的一步,就是直接进行字符串连接),例如:
var a=5; var b='5'; alert(a==b); //系统会先将他们都转换成int类型,然后再判断,所以返回True
var a=5; var b='5'; alert(a==b); //系统不会转换类型,而进行直接比较,所以结果返回False
变量的作用域(作用范围):
局部变量:定义在函数里面,并且它只能在定义它的函数内部使用;
全局变量:定义在函数体外部的变量,可以使用在整个程序中;
什么是闭包:子函数可以使用父函数中的局部变量(就是闭包),所有的程序中基本上都在使用,不需要太在意(有兴趣的可以百度一下)
命名规范及必要性:
可读性(能看懂)、规范性(符合规则)
匈牙利命名法:类型前缀、首字母大写,如表中所示:
| 类型 | 前缀 | 类型 | 实例 |
| 数组 | a | Array | aItems |
| 布尔值 | b | Boolean | bIsComplete |
| 浮点数 | f | Float | fPrice |
| 整数 | i | Integer | iItemCount |
| 函数 | fn | Function | fnHandler |
| 对象 | o | Object | oDiv1 |
| 正则表达式 | re | RegExp | reEmailCheck |
| 字符串 | s | String | sUserName |
| 变体变量 | v | Variant | vAnything |
运算符:
算术运算符:+(加)、-(减)、*(乘)、/(除)、%(取模/余);实例:隔行变色、秒转时间、小小计算器
赋值运算符:=、+=、-=、*=、/=、%=
关系运算符:<、>、<=、>=、==、===、!=、!==、
逻辑运算符:&&与、||或、!非 实例:全选、反选
运算符优先级:()优先级最高
var aLi=document.getElementsByTagName('li');
for (var i=0;i<aLi.length;i++){ //各行变色
if(i%2==0){
aLi[i].style.background='#ccc';
}else {
aLi[i].style.background='';
}
}
var s=1235;
alert(parseInt(s/6)+'分'+s%60+'秒'); //秒转时间
流程控制:
判断:if、switch、?:(三目运算符) 条件?:语句1:语句2
循环:while、for
跳出:break(跳出循环,执行下面语句)、continue(跳出本次循环,继续执行下一次循环)
真(true):非零数字、非空字符串、非空对象
假(False):数字零、空字符串、空对象、undefined
Json:
什么是Json:(百度百科)JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。(类似于Python中字典(dictionary)类型)
json={name1:value1, name2:value2, name3:value3,……}; //其中name2不能和name1相同,否则value2会把value1覆盖掉;另外value1、value2...类型可以相同,也可以不同。
alert(json.name1);或者用alert(json['a']); //返回的是value1
JSon和数组:
json的元素下标是字符(串),如上面取值语句; 数组的下标是数字,从0开始;
json没有“长度”,即alert(json.length);返回undefined; 而数组有“长度”;
在循环语句中:
for (var i=0; i<arr.length; i++){alert('第'+i+'个东西'+arr[i]);} //数组有两种循环方法
for (var i in arr){alert('第'+i+'个东西'+arr[i]);}
for (var i in json){alert('第'+i+'个东西'+json[i]);} //json的循环方法
JSon和for in
上述介绍了json的循环遍历,但是建议数组循环仍用第一种循环,这样不容易弄混
第二节 JavaScript基础的更多相关文章
- android内部培训视频_第二节 布局基础
第二节:布局入门 一.线性布局 需要掌握的属性: 1.orientation:排列方式 vertical:垂直 Horizontal:水平 2.weight:水平布局的权重 3.gravity:子控件 ...
- (转)JAVA AJAX教程第二章-JAVASCRIPT基础知识
开篇:JAVASCRIPT是AJAX技术中不可或缺的一部分,所以想学好AJAX以及现在流行的AJAX框架,学好JAVASCRIPT是最重要的.这章我给大家整理了一些JAVASCRIPT的基础知识.常用 ...
- 第二节 Python基础之变量,运算符,if语句,while和for循环语句
我们在上一节中,我们发现当我们用字符串进行一些功能处理的时候,我们都是把整个字符串写下来的,比如"jasonhy".startwith("j"),如果我们在程序 ...
- 第二节 pandas 基础知识
pandas 两种数据结构 Series和DataFrame 一 Series 一种类似与一维数组的对象 values:一组数据(ndarray类型) index:相关的数据索引标签 1.1 se ...
- 学习javascript基础知识系列第二节 - this用法
通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...
- 第二节:Web前端-ASP.NET之C#基础
第二节:Web前端-ASP.NET之C#基础 学习ASP.NET,要掌握学习语言,控件等技能, <div style="text-align: center; line-height: ...
- javascript 基础3第13节
<html> <head> <title>javascript基础</title> </head> <body> 1.流程控制 ...
- javascript 基础2第12节
1. <html> <head> <title>javascript基础</title> </head> <body> 1.Nu ...
- javascript 基础1第11节
<html> <head> <title>javascript基础</title> </head> <body> 1.NaN i ...
随机推荐
- Kinect2.0相机标定
尝试进行Kinect2.0相机进行标定 1. Color镜头标定 $(u_{rgb},v_{rgb},1)=W_{rgb}*(x,y,z)$ Calibration results after opt ...
- DL中train\dev\test集
转自:https://blog.csdn.net/l8947943/article/details/80328721 training set:训练集是用来训练模型的.遵循训练集大,开发,测试集小的特 ...
- 配置Tomcat启用Https安全协议的访问
1.首先使用keytool工具生成证书文件名为cnkey,然后拷贝此证书即文件到tomcat安装目录conf下(放到哪里都行,主要在下面配置中指明路径就好了.这里我就放这了conf) 2.配置serv ...
- Mac Maven配置
Maven下载链接,解压到指定目录,我这里是 /Users/JYH/Desktop/Hadoop-2.7.2/apache-maven-3.3.9 打开终端,配置环境变量 输入命令 vi ~/.bas ...
- javascript另类方法高效实现htmlencode()与htmldecode()函数
最常见的做法是采用正则表达式替换的方法,将特殊字符如 < > & 等进行替换,htmlencode的时候这样替换还比较容易,但发过来htmldecode的时候就不一定好用了,因为需 ...
- CentOS6.5安装Scrapy
1.安装命令超级简单: [root@mycentos ~]# pip install Scrapy 建立软链接: [root@mycentos ~]# ln -s /usr/local/python3 ...
- tensorboard可视化节点却没有显示图像的解决方法---注意路径问题加中文文件名
问题:完成graph中的算子,并执行tf.Session后,用tensorboard可视化节点时,没有显示图像 1. tensorboard 1.10 我是将log文件存储在E盘下面的,所以直接在E盘 ...
- python QQTableView中嵌入复选框CheckBox四种方法
搜索了一下,QTableView中嵌入复选框CheckBox方法有四种: 第一种不能之前显示,必须双击/选中后才能显示,不适用. 第二种比较简单,通常用这种方法. 第三种只适合静态显示静态数据用 第四 ...
- SQL Server之获取下周一的日期
今天项目中需要得到下周一的日期,故想到了一种解决办法,用slq语句解决了.当然实现方法肯定不只有这一种. -(select DATEPART(weekday,getdate())) /*下周一差几天 ...
- Javascript-数据类型转换 、 运算符和表达式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...