【前端三件套】——JavaScript

语言介绍

JavaScript的诞生

JavaScript 诞生于 1995 年。由Netscape(网景公司)的程序员Brendan Eich(布兰登)与Sun公司联手开发一门脚本语言, 最初名字叫做Mocha,1995年9月改为LiveScript。12月,Netscape公司与Sun公司(Java语言的发明者)达成协议,后者允许将这种语言叫做JavaScript。这样一来,Netscape公司可以借助Java语言的声势。

1996年3月, Netscape公司的浏览器Navigator2.0浏览器正式内置了JavaScript脚本语言. 此后其他主流浏览器逐渐开始支持JavaScript.

js版本

JavaScript这种语言的基本语法结构是由ECMAScript来标准化的, 所以我们说的JavaScript版本一般指的是ECMAScript版本.

  • 1997年7月,ECMAScript 1.0发布。
  • 1998年6月,ECMAScript 2.0版发布。
  • 1999年12月,ECMAScript 3.0版发布。
  • 2007年10月,ECMAScript 4.0版草案想要提交ECMA组织, 但由于4.0版的目标过于激进, 改动太大, 并且微软,谷歌等大公司极力反对;一直到2008年7月ECMA开会决定,中止ECMAScript 4.0的开发(即废除了这个版本)
  • 2009年12月,ECMAScript 5.0版正式发布
  • 2011年6月,ECMAscript 5.1版发布
  • 2015年6月,ECMAScript 6正式发布,并且更名为“ECMAScript 2015”。

js的优势

目前苹果公司的Safari, 谷歌的Chrome,微软的IE等几乎全部浏览器都支持JavaScript, 基于JavaScript开发的库和框架数不胜数, 例如: jQuery,Angular, React等…

JavaScript将在前端和服务器端(Node.js)有更好的发展

js用途

它的主要目的是,验证发往服务器端的数据、增加 Web互动、加强用户体验度等。可用于开发网站、游戏、移动端app等

js语言的组成

javascript = ECMAScript + BOM + DOM

  1. 核心(ECMAScript)
  2. 浏览器对象模型(BOM)
  3. 文档对象模型(DOM)

JS和H5的关系

h5全称html5,不是单纯的html的第5个版本,而是一项最新的web标准,是html、css、javascript等技术的集合

编辑工具

  • sublime Text
  • HBuilder
  • Dreamweaver
  • Notepad++等

语法

js代码的编写位置

  • script标签
    <script type="text/javascript">
        alert('你好')
    </script>
    
  • js文件
    独立的js文件需要引入页面才能执行
     
    <script type="text/javascript" src="js/common.js"><script>
    

    script标签属性
    • type:类型
    • src :js文件路径
      带src属性的script标签内不能写js代码

JS变量的定义、关键字

  • 变量定义(使用var关键字):变量是存储数据的容器
    var age; //var 是关键字,age是变量名
  • 赋值:
    age = 20;
  • 定义的同时赋值:
    var age=20;
  • 可以一次定义多个变量:
    var name="zhangsan", age=18, weight=108;

JS代码规范:

  • JS变量的命名规范
    • 变量名必须是数字,字母,下划线_和美元符$组成;
    • 第一个字符不能为数字
    • 不能使用关键字或保留字
  • 代码可读性
    • 标识符区分大小写,如:age和Age是不同的变量。但强烈不建议用同一个单词的大小写区分两个变量。
    • 变量命名尽量遵守驼峰原则: myStudentScore
    • 变量命名尽量见名知意
    • 保持代码缩进
    • JS语句的末尾尽量写上分号;
    • 运算符两边都留一个空格, 如 var n = 1 + 2;
    • 注释
      • 单行注释://注释内容
      • 多行注释(和CSS注释一样)
        • /*注释内容*/
        • 多行注释不能嵌套

JS数据类型

  • 基本数据类型
    • Number:数字
      • NaN:是一个特殊的值,即非数值(Not a Number)。数学运算无法得到数字时,就会返回NaN
        • 不代表任何值,也不等于任何值,甚至自己都不等于自己
        • 任何数据与它运算都返回NaN
        • isNaN(a):用来判断a到底是不是非数字,返回布尔值
    • String:字符串
      用引号(单/双引号)括起来的内容
    • Boolean: 布尔类型
      Boolean 类型有两个值:true和false
  • 引用数据类型
    • Array:数组
    • Object:对象
  • 特殊数据类型
    • Null
      Null 类型是一个只有一个值的数据类型,即特殊的值 null。它表示一个空对象引用(指针),而 typeof 操作符检测 null 会返回 object
    • Undefined
      Undefined类型只有一个值,即特殊的 undefined,在使用 var 声明变量,但没有对其初始化时,这个变量的值就是 undefined
      • 与not defined的区别(not defined:未声明)
  • 数据类型判断
    • typeof
      typeof 'html5'; //=>string
      typeof 100; //=>number
      typeof true //=>boolean
      typeof null //=>object
      
  • 数据类型转换
    • 基本数据类型转换:利用内置函数进行转换
    值(a)转换为字符串String(a)数字Number(a)布尔值Boolean(a)
    undefined=>"undefined"NaNfalse
    null=>"null"0false
    true=>"true"1
    false=>"false"0
    ""=>0false
    "1.2"=>1.2true
    "one"=>NaNtrue
    0=>"0"false
    -0=>"0"false
    NaN=>"NaN"false
    1=>"1"true
    • 隐式转换
      如果运算不能进行下去,内部就会尝试进行数据类型的转换
      支持隐式转换的运算:逻辑运算、关系运算、算术运算

运算

算术运算:

+, -, *, /, %:加,减,乘,除,取余(取模)

  • toFixed(num): 在数字后面调用,num为小数位,有四舍五入的功能,得到一个字符串
  • parseInt():取整:获取到第一个不为数字的字符为止
  • parseFloat():取小数

+ 的特殊用法:字符串拼接

+号两侧只要有一个是字符串则为字符串拼接

赋值操作:

  • =
    var num1=10;//表示把10赋值给num1变量
  • +=:在原来的内容基础上追加内容
    str += 'test' <==> str = str + 'test'
  • -=:
    var n=10; n -= 2 <==> n = n - 2
  • *=,/=,%=

关系运算(返回布尔值)

  • ==(等于), !=(不等于)
  • <(小于)、>(大于)、<=(小于等于)、>=(大于等于)
  • ===、恒等于/全等于,比较的时候要求值和类型都相等(不会进行类型隐式转换)
  • !==、不全等于
  • 关系运算符的比较规则:
    1. 数字和数字比较, 直接比较大小
    2. 数字和字符串比较, 字符串转换为数字后再比较
    3. 字符串和字符串比较, 进行字符的ASCII码值比较

[案例]

  • 一个引号引发的公司倒闭
  • 计算两个文本框的和
  • 为抵抗洪水,战士连续作战89小时,编程计算共多少天零多少小时?

[练习]

  • 小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。

    提示:摄氏度与华氏度的转换公式为:摄氏度 = 5/9.0*(华氏度-32)


逻辑运算(返回布尔值)

  • &&: 逻辑与

    &&比||优先级高

  • ||:逻辑或
  • !: 逻辑非
    !true //=> false
    !false //=> true
    

一元运算

  • ++: 自增1(在原来的数值基础上加1)
  • –:自减1(在原来的数值基础上加1)
  • 前置:
     
    var num = 10;
    ++num;--num;
    

    返回值:返回值是减1(加1)之后的值
  • 后置:
     
    var num = 10;
    num++;num--
    

    返回值:返回值是没减1(加1)之前的值

八进制和十六进制的介绍

  • 二进制
    var num = 0b10101101;
  • 八进制
    var num = 0o0123
  • 十进制
  • 十六进制
    var num = 0xef9302;
相互转换
  • 十进制转其他
     
    var number = 20;
    number.toString(2); //转成2进制
    number.toString(8);//转成8进制
    

  • 其他转十进制
     
    var x='110';  
    parseInt(x,2);  
    parseInt(x,8);  
    parseInt(x,16);
    

  • 其他转其他
    先用parseInt转成十进制再用toString转到目标进制

[案例]

  • var k=0; 计算:k++ + ++k +k +k++的值
  • 猜数字游戏

[练习]

  • 给定一个三位数,分别把这个数字的百位、十位、个位算出来并显示。
  • 判断输入框输入的年份是否为闰年

    能被4整除但不能被100整除,或者能被400整除的才叫闰年

[作业]

  1. 计算两个文本框的加减乘除,并把结果写入第三个文本框

[扩展作业]

  1. 计算商品价格


参考资料

关键字

breakdoinstanceoftypeof
caseelsenewvar
catchfinallyreturnvoid
continueforswitchwhile
debuggerfunctionthiswith
defaultifthrowdelete
intry

保留字

classenumextendssuper
constexportimport

操作符优先级

运算符描述
., [], ()对象成员存取、数组下标、函数调用、分组等
++, –, ~, !, delete, new, typeof, void一元运算符
*, /, %乘法、除法、取模
+, -加法、减法、字符串连接
<, <=, >, >=, instanceof关系比较、检测类实例
==, !=, ===, !==等于、恒等(全等)
&&逻辑与
||逻辑或
?:三元运算条件
=, +=, -=, *=, /=, %=赋值、运算赋值
,多重赋值、数组元素

术语

  • 表达式的概念:
    • 由运算符和操作数(变量或常量)组成的式子
    • 算术运算符组成的式子叫算术表达式
    • 关系运算符组成的式子叫关系表达式或者条件表达式
    • 逻辑运算符组成的式子叫做逻辑表达式

      如:2+3;a+5;c>3; a&&b等

  • 返回值:运算后得到的值
  • 程序的三大流程控制

    我们的计算机在执行一个程序的时候,最基本的方式是一条语句接一条语句的执行。但不可能所有的问题都能用顺序执行方式就能解决,总会有一些跳转。采用结构化的程序设计,可以大大提高开发程序的速度、提高程序的可读性、程序运行的速度和效率

    • 顺序:从上朝下执行的代码就是顺序
    • 分支(选择):根据不同的情况,执行对应代码
    • 循环:重复做一件事情

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ubanXia

您的鼓励是我最大的创作动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值