JavaScript介绍

JavaScript是运行在浏览器端的脚步语言,JavaScript主要解决的是前端与用户交互的问题,包括使用交互与数据交互。 JavaScript是浏览器解释执行的,前端脚本语言还有JScript(微软,IE独有),ActionScript( Adobe公司,需要插件)等。

前端三大块

1、HTML:页面结构
2、CSS:页面表现:元素大小、颜色、位置、隐藏或显示、部分动画效果
3、JavaScript:页面行为:部分动画效果、页面与用户的交互、页面功能

ECMAScript

ECMA(欧洲计算机制造协会)定义了ECMA-262规范.

EcmaScript是规范.

一个完整的 JavaScript 实现是由以下 3 个不同部分组成的:

  • 核心(ECMAScript)
  • 文档对象模型(DOM) Document object model (整合js,css,html)
  • 浏览器对象模型(BOM) Broswer object model(整合js和浏览器)

Javascript 在开发中绝大多数情况是基于对象的.也是面向对象的.

简单地说,ECMAScript 描述了以下内容:

  • 语法
  • 类型
  • 语句
  • 关键字
  • 保留字
  • 运算符
  • 对象 (封装 继承 多态) 基于对象的语言.使用对象.

JS的引入方式

  1. 1 直接编写
  2. <script>
  3. alert('hello yuan')
  4. </script>
  5. 2 导入文件
  6. <script src="hello.js"></script>
  7.  
  8. 3.行间事件(主要用于事件)
  1. <input type="button" name="" onclick="alert('ok!');">

javascript语句与注释

1、一条javascript语句应该以“;”结尾

2、javascript注释

  1. // 单行注释
  1. /*
  2. 多行注释
  3. 1、...
  4. 2、...
  5. */

JS的变量、常量和标识符

JavaScript 是一种弱类型语言,javascript的变量类型由它的值来决定。

JS的变量

如何在JS中定义使用变量呢?

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

  1. var a = 123;
  2. var b = 'asd';

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

  1. //同时定义多个变量可以用","隔开,公用一个‘var’关键字
  2.  
  3. var c = 45,d='qwe',f='68';

3、声明变量时 可以不用var. 如果不用var 那么它是全局变量

4、变量、函数、属性、函数参数命名规范

  • 区分大小写,x与X是两个变量 
  • 第一个字符必须是字母、下划线(_)或者美元符号($)
  • 其他字符可以是字母、下划线、美元符或数字
  1. 命名规范:
  2. Camel 标记法
  3. 首字母是小写的,接下来的字母都以大写字符开头。例如:
  4. var myTestValue = 0, mySecondValue = "hi";
  5. Pascal 标记法
  6. 首字母是大写的,接下来的字母都以大写字符开头。例如:
  7. Var MyTestValue = 0, MySecondValue = "hi";
  8. 匈牙利类型标记法
  9. 在以 Pascal 标记法命名的变量前附加一个小写字母(或小写字母序列),说明该变量的类型。例如,i 表示整数,s 表示字符串,如下所示“
  10. Var iMyTestValue = 0, sMySecondValue = "hi";

常量和标识符

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

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

JS的数据类型

5种基本数据类型:
number        ----- 数值

string      ----- 字符串

boolean     ----- 布尔值

undefined     ----- undefined

nul      l----- null

1种复合类型:
object

数字类型(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进制的换算:

  1. 2进制: 1111 0011 1101 0100 <-----> 16进制:0xF3D4 <-----> 10进制:62420
  2. 2进制: 1 111 001 111 010 100 <-----> 8进制:0171724

字符串类型(string)

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

字符串中部分特殊字符必须加上右划线\;常用的转义字符 \n:换行 \':单引号 \":双引号 \\:右划线

布尔类型(boolean)

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

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

Null & Undefined类型

Undefined类型

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

当函数无明确返回值时,返回的也是值 "undefined";

Null类型

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

尽管这两个值相等,但它们的含义不同。undefined 是声明了变量但未对其初始化时赋予该变量的值,null 则用于表示尚未存在的对象(在讨论 typeof 运算符时,简单地介绍过这一点)。如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。

运算符

  1. 算术运算符:
  2. + - * / % ++ --
  3.  
  4. 比较运算符:
  5. > >= < <= != == === !==
  6.  
  7. 逻辑运算符:
  8. && ||
  9.  
  10. 赋值运算符:
  11. = += -= *= /=
  12.  
  13. 字符串运算符:
  14. + 连接,两边操作数有一个或两个是字符串就做连接运算

注意1: 自加自减

  1. var i=10;
  2. console.log(i++); //---10
  3. console.log(i); //---11
  4. console.log(++i); //---12
  5. console.log(i); //---12
  6. console.log(i--); //---12
  7. console.log(--i); //---10

注意2: 单元运算符

  1. - 除了可以表示减号还可以表示负号 例如:x=-y
  1. + 除了可以表示加法运算还可以用于字符串的连接 例如:"abc"+"def"="abcdef"

js不同于python,是一门弱类型语言

  1. 静态类型语言
  2. 一种在编译期间就确定数据类型的语言。大多数静态类型语言是通过要求在使用任一变量之前声明其数据类型来保证这一点的。Java C 是静态类型语言。
  3. 动态类型语言
  4. 一种在运行期间才去确定数据类型的语言,与静态类型相反。VBScript Python 是动态类型的,因为它们确定一个变量的类型是在您第一次给它赋值的时候。
  5. 强类型语言
  6. 一种总是强制类型定义的语言。Java Python 是强制类型定义的。您有一个整数,如果不明确地进行转换 ,不能将把它当成一个字符串去应用。
  7. 弱类型语言
  8. 一种类型可以被忽略的语言,与强类型相反。JS 是弱类型的。在JS中,可以将字符串 '12' 和整数 3 进行连接得到字符串'123',然后可以把它看成整数 123 ,所有这些都不需要任何的显示转换。
  9. 所以说 Python 既是动态类型语言 (因为它不使用显示数据类型声明),又是强类型语言 (因为只要一个变量获得了一个数据类型,它实际上就一直是这个类型了)。

注意3: NaN

  1. var d="yuan";
  2. d=+d;
  3. alert(d);//NaN:属于Number类型的一个特殊值,当遇到将字符串转成数字无效时,就会得到一个NaN数据
  4. alert(typeof(d));//Number
  5.  
  6. //NaN特点:
  7.  
  8. var n=NaN;
  9.  
  10. alert(n>3);
  11. alert(n<3);
  12. alert(n==3);
  13. alert(n==NaN);
  14.  
  15. alert(n!=NaN);//NaN参与的所有的运算都是false,除了!=

==(等号)  !=(非等号)  ===(全等号)  !==(非全等号)

等号和非等号的同类运算符是全等号和非全等号。这两个运算符所做的与等号和非等号相同,只是它们在检查相等性前,不执行类型转换。

  1. console.log(2==2);    //true
  2. console.log(2=="2");   //true
  3. console.log(2==="2");  //false
    console.log(2!="2"); //false
  4. console.log(2!=="2");  //true

注意1:

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

注意2:

  1. 如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0true 1
  2. 如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
  3. 如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
  4. 如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。

逻辑运算符

  1. if (2>1 && [1,2]){
  2. console.log("条件与")
  3. } //条件与
  4. console.log(1 && 3); //3 (与运算,如果两个都正确,返回第二个,因为与运算需要两个都正确,第一个正确的话需要继续往后走看第二个是否正确)
  5. console.log(0 && 3); //0 (与运算,如果第一个错误,返回第一个,因为与运算需要两个都正确,第一个错误的话,就不需要往后走了)
  6. console.log(0 || 3); //3 (或运算,如果第一个错误,返回第二个,因为或运算只需要一个正确,第一个错误的话,就接着往后走看第二个是否正确)
  7. console.log(2 || 3); //2 (或运算,如果第一个正确,返回第一个,因为或运算只需要有一个正确,第一个正确的话,就不需要往后走了)
  1. 在比较时,该运算符还遵守下列规则:
  2. null undefined 相等。
  3. 在检查相等性时,不能把 null undefined 转换成其他值。
  4. 如果某个运算数是 NaN,等号将返回 false,非等号将返回 true
  5. 如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等。

在JS中,0、""、''、null、false、undefined、NaN的布尔值都是为false,其余为true

流程控制

  • 顺序结构(从上向下顺序执行)
  • 分支结构
  • 循环结构

顺序结构

  1. console.log("星期一"); //星期一
  2. console.log("星期二"); //星期二
  3. console.log("星期三"); //星期三

分支结构

if-else结构:

  1. if (表达式){
  2. 语句1;
  3. ......
  4. } else{
  5. 语句2;
  6. .....
  7. }

功能说明:如果表达式的值为true则执行语句1,否则执行语句2

  1. var x= (new Date()).getDay();
  2. //获取今天的星期值,0为星期天
  3. var y;
  4.  
  5. if ( (x==6) || (x==0) ) {
  6. y="周末";
  7. }else{
  8. y="工作日";
  9. }
  10.  
  11. console.log(y);

或者:

  1. var x= (new Date()).getDay();
  2. y="工作日";
  3. if ( (x==6) || (x==0) ) {
  4. y="周末";
  5. }
  6. console.log(y);

if-elif-else结构:

  1. if (表达式1) {
  2. 语句1;
  3. }else if (表达式2){
  4. 语句2;
  5. }else if (表达式3){
  6. 语句3;
  7. } else{
  8. 语句4;
  9. }
  1. var a = 6;
  2. if(a==1)
  3. {
  4. alert('语文');
  5. }
  6. else if(a==2)
  7. {
  8. alert('数学');
  9. }
  10. else if(a==3)
  11. {
  12. alert('英语');
  13. }
  14. else if(a==4)
  15. {
  16. alert('美术');
  17. }
  18. else if(a==5)
  19. {
  20. alert('舞蹈');
  21. }
  22. else
  23. {
  24. alert('不补习');

switch-case结构

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

  1. var a = 6;
  2.  
  3. switch (a){
  4. case 1:
  5. alert('语文');
  6. break;
  7. case 2:
  8. alert('数学');
  9. break;
  10. case 3:
  11. alert('英语');
  12. break;
  13. case 4:
  14. alert('美术');
  15. break;
  16. case 5:
  17. alert('舞蹈');
  18. break;
  19. default:
  20. alert('不补习');
  21. }

switch比else if结构更加简洁清晰,使程序可读性更强,效率更高。

循环结构

  循环语句流程图

for循环:

  1. 语法规则:
  2.  
  3. for(初始表达式;条件表达式;自增或自减)
  4. {
  5. 执行语句
  6. ……
  7. }

功能说明:实现条件循环,当条件成立时,执行语句1,否则跳出循环体

for循环的另一种形式:

  1. for( 变量 in 数组或对象)
  2. {
  3. 执行语句
  4. ……
  5. }

while循环:

  1. 语法规则:
  2.  
  3. while (条件){
  4. 语句1
  5. ...
  6. }

功能说明:运行功能和for类似,当条件成立循环执行语句花括号{}内的语句,否则跳出循环;同样支持continue与break语句。

  1. var i=1;
  2. while (i<=6) {
  3. document.write("<h"+i+">hello</h"+i+">");
  4. document.write("<br>");
  5. i++;
  6. }
  7. //循环输出h1到h6的字体大小

异常处理

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

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

Python--前端基础之JavaScript(JS的引入方式,JS的变量、常量和标识符,JS的数据类型,运算符,流程控制,JavaScript的对象)的更多相关文章

  1. 《js高程》笔记总结一:基本概念(语法,数据类型,流程控制,函数)

    1.ECMA 欧洲计算机制造商协会 2.";"的作用 代码后的:当压缩代码时可以用于压缩代码,有效的间隔开代码. 3.数据类型有 undefined,null,boolean,st ...

  2. JS的引入方式_变量的使用_变量的类型

    JS的俩种引入方式: 1. <!--js的引入方式1--> <script> /*网页中的弹框*/ alert("js的学习!!") </script ...

  3. css js 的引入方式和书写位置

    css 的引入方式 1.行内样式 <div id="div1" style="width:100px; height:100px; background:red&q ...

  4. 前端1-----CSS层叠样式表了解,css的引入方式,三大选择器(标签,类,id),高级选择器

    前端1-----CSS层叠样式表了解,css的引入方式,三大选择器(标签,类,id),高级选择器 一丶CSS简介    叠样式表(英文全称:Cascading Style Sheets)是一种用来表现 ...

  5. python的学习笔记01_3 基本运算符 流程控制if while 字符串常用办法

    基本运算符 运算符 计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算.比较运算.逻辑运算.赋值运算.成员运算.身份运算.位运算,今天我们暂只学习算数运算.比较运算.逻辑运 ...

  6. python全栈开发day38-css三种引入方式、基础选择器、高级选择器、补充选择器

    一.昨日内容回顾 div:分割整个网站,很多块 (1)排版标签 (2)块级标签 独占一行 可以设置高和宽,如果不设置宽高,默认是父盒子的宽 span: (1) 小区域 (2)文本标签 (3)在一行内显 ...

  7. CSS【03】:CSS 基础选择器与三种引入方式

    基础选择器 选择器:css 选择 html 标签的一个工具,是将 css 与 html 建立起联系,那么 css 就可以控制 html 样式 选择器其实就是给 html 标签起名字 标签选择器 作用: ...

  8. Day1 Python基础学习——概述、基本数据类型、流程控制

    一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...

  9. 前端(二)—— CSS的引入方式、长度与颜色单位、常用样式、选择器

    CSS的引入方式.长度与颜色单位.常用样式.选择器 一.CSS的三种引入方式 1.行间式 <!doctype html> <html> <head> <met ...

随机推荐

  1. exists 的简单介绍

    准备数据: CREATE TABLE Books( BookID number, BookTitle VARCHAR2(20) NOT NULL, Copyright varchar2(20) ) I ...

  2. 【BZOJ3473&BZOJ3277】字符串(广义后缀自动机)

    题意:给定n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串? 本质相同的子串算多个. 对于 100% 的数据,1<=n,k<=10^5,所有字符串总 ...

  3. [CSP-S模拟测试76]题解

    咕咕咕 A.序列 无解情况:$n>a*b$或$n<a+b-1$ 把序列分成B段,每段内部上升,各段分界处构成下降子序列. 实现并不是太简单,要动态地考虑一下边界什么的. #include& ...

  4. php面试专题---4、流程控制考点

    php面试专题---4.流程控制考点 一.总结 一句话总结: 理解循环内部机制(指针操作),更易于记忆foreach的reset特性,分支结构中理解了switch...case的执行步骤(跳转表)也就 ...

  5. DTED文件结构

    注:DTED层级为1时,每列总计2414字节,包含1201个高度信息:DTED层级为2时,每列总计7214字节,包含3601个高度信息:DTED层级为3时,每列包含9001个高度信息. 每列数据前八个 ...

  6. 动态调试某个apk的smali代码,微信举例

    本地环境: PC:windows 10,Intellij IDEA (android studio应该一样的) 手机:nexus5 8.1系统, 其他依赖:smalidea插件,xposed 插件 h ...

  7. centos7运行yum报如下提示:Run "yum repolist all" to see the repos you have

    centos7运行yum报如下提示: There are no enabled repos. Run "yum repolist all" to see the repos you ...

  8. Java多线程面试15道

    Java 线程面试问题 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分.如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的问题.在投资银行业务中多线程和并发是 ...

  9. 配送单MYSQL ,一点都不机智

    这是配送单制作,后面修改了下表 . 写的太乱. 不过也不想去修改了. 放在这里了.反正还能用. 不然就坑爹了. 以后写好一点. 这都是些神马, 太难受了. /* 配送单制作,缺少商品规格,以及库存查询 ...

  10. Java + selenium 元素定位(3)之By TagName

    本篇介绍findElement接口中的By TagName方法.首先,要知道什么是tagname.之前我们使用F12开发者工具查看网页元素是,发现每行代码前都有<input>.<bo ...