JavaScript编程语言 基础 (1)

问题:什么是web前端

前端:指界面,计算机(PC)软件桌面的界面; 计算机端的浏览器界面; 移动端的软件(app)界面; 移动端的浏览器界面。

Html+css+JavaScript 使用网页技术(Html,css,JavaScript)开发界面;

Html,css和JavaScript的关系:

HTML:架构师,网页内容;

CSS:修饰师:装饰内容。

JavaScript:魔术师,内容网页进行交互。

关于学习方法:编程没有捷径;只能多写,多记,多理解。

JavaScript历史:

1. navigator:网景公司,在1995年推出。Livescript很简单的。完成网页中基本的交互能。

2.  1995 java很火。Write one,run anywhere!!,写一遍代码,在各个平台运行。

3 .网景公司和sun公司合作,推出了javascript。

4. 网景公司,招人,Brendan Eich开发Scheme;开发javascript,像极了java,要比java简单。怄气加赶工,10天开发出了javascript。推出javascript1.0。

5. 1996年时,将javascript1.1提交给了ECMA组织,作为js标准。a)提供标准:ECMAScript标准,javascript是实现了ECMAScript标准的语言。

6. 微软:1996没有浏览器,收购了一家公司,产品:IE,也实现了ECMAScript标准jscript。

7.为期8年的浏览器大战开始。谷歌,火狐,欧鹏,IE safari。

注意:ECMAscript和JavaScript有什么区别?

ECMAscript:语言标准,简称ES,JavaScript是实现了ECMAscript的编程语言。

关于浏览器及其内核

作为前端开发,熟悉四大内核是非常有必要的。四大内核的解析不同使网页渲染效果更具多样化。下面总结一下各常用浏览器所使用的内核。 

1、IE浏览器内核:Trident内核,也是俗称的IE内核; 

2、Chrome浏览器内核:统称为Chromium内核或Chrome内核,以前是Webkit内核,现在是Blink内核; 

3、Firefox浏览器内核:Gecko内核,俗称Firefox内核;

4、Safari浏览器内核:Webkit内核;

5、Opera浏览器内核:最初是自己的Presto内核,后来是Webkit,现在是Blink内核; 

6、360浏览器、猎豹浏览器内核:IE+Chrome双内核; 

7、搜狗、遨游、QQ浏览器内核:Trident(兼容模式)+Webkit(高速模式); 

8、百度浏览器、世界之窗内核:IE内核; 

9、2345浏览器内核:以前是IE内核,现在也是IE+Chrome双内核;

前五个属于主流浏览器。

一些国内的浏览器他们的内核:

  搜狗浏览器:兼容模式(IE:Trident)和高速模式(webkit)

  傲游浏览器:兼容模式(IE:Trident)和高速模式(webkit)  

  QQ浏览器:普通模式(IE:Trident)和极速模式(webkit) 

  360极速浏览器:基于谷歌(Chromium)和IE内核 360安全

什么是JavaScript?

JavaScript是一门脚本语言。弱数据类型,基于对象,基于事件驱动的语言。

Javascript是解释执行的。 解释器是浏览器。

JS特点

(1) 脚本语言。JavaScript是一种解释型的脚本语言,C、C++、java等语言先编译后执行,而JavaScript是在程序的运行过程中逐行进行解释。

(2)基于对象。JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。

(3)简单。JavaScript语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于Java基本语句和控制的脚本语言,其设计简单紧凑。

(4)动态性。JavaScript是一种采用事件驱动的脚本语言,它不需要经过Web服务器就可以对用户的输入做出响应。在访问一个网页时,鼠标在网页中进行鼠标点击或上下移、窗口移动等操作JavaScript都可直接对这些事件给出相应的响应。

(5)跨平台性。JavaScript脚本语言不依赖于操作系统,仅需要浏览器的支持。因此一个JavaScript脚本在编写后可以带到任意机器上使用,前提上机器上的浏览器支持JavaScript脚本语言,目前JavaScript已被大多数的浏览器所支持。

JS应用:

(1) 网站开发:  网站前端开发:给网页添加动态的效果。 

 网站后端开发:Node.js让程序员可以用js自由地写后端了。

(2) Web app:HTML5提供了很多API支持,可以实现原生应用拥有的大部分功能,但是性能有待提高。像Firefox OS就是基于web app的移动操作系统。

(3) 混合式应用开发:把原生应用的一部分用前端技术实现,使原生应用更加灵活。很多应用都会这样做。PhoneGap,React Native之类平台的出现允许程序员使用js来进行移动应用开发。

JavaScript的构成:

1. ECMAScript语言基础;(JS基本语法)

(1) JavaScript的历史

(2) ECMAScript标准

(3) 基本语法

(4) 语句

JavaScript 程序的执行单位为行(line),也就是一行一行地执行。一般情况下,每一行就是一个语句。语句(statement)是为了完成某种任务而进行的操作,比如下面就是一行赋值语句。

var x=1+2;复制代码

这条语句先用var命令,声明了变量x,然后将1 + 2的运算结果赋值给变量a

1 + 2叫做表达式(expression),指一个为了得到返回值的计算式。语句和表达式的区别在于,前者主要为了进行某种操作,一般情况下不需要返回值;后者则是为了得到返回值,一定会返回一个值。凡是 JavaScript 语言中预期为值的地方,都可以使用表达式。比如,赋值语句的等号右边,预期是一个值,因此可以放置各种表达式。

语句以分号结尾,一个分号就表示一个语句结束。多个语句可以写在一行内。

var x=1+2;    var y=1+3;复制代码

分号前面可以没有任何内容,JavaScript引擎将其视为空语句。

;;;复制代码

上面的代码就表示3个空语句。

表达式不需要分号结尾。一旦在表达式后面添加分号,则 JavaScript 引擎就将表达式视为语句,这样会产生一些没有任何意义的语句。

1+2;   
"abc";复制代码

上面两行语句只是单纯地产生一个值,并没有任何实际的意义。

  语句分为条件语句和 循环语句,

  条件语句:JavaScript 提供if结构和switch结构,完成条件判断,即只有满足预设的条件,才会执行相应的语句。


if 语句,if else 语句,


switch 语句,

多个if...else连在一起使用的时候,可以转为使用更方便的switch结构。

switch (fruit) {case "banana":// ...break;case "apple":// ...break;default:// ...
}
复制代码

上面代码根据变量fruit的值,选择执行相应的case。如果所有case都不符合,则执行最后的default部分。需要注意的是,每个case代码块内部的break语句不能少,否则会接下去执行下一个case代码块,而不是跳出switch结构。


三元运算符,

JavaScript 还有一个三元运算符(即该运算符需要三个运算子)?:,也可以用于逻辑判断。

(条件) ? 表达式1 : 表达式2
复制代码

上面代码中,如果“条件”为true,则返回“表达式1”的值,否则返回“表达式2”的值。

var even = (n % 2 === 0) ? true : false;
复制代码

上面代码中,如果n可以被2整除,则even等于true,否则等于false。它等同于下面的形式。

var even;
if (n % 2 === 0) {even = true;
} else {even = false;
}
复制代码

这个三元运算符可以被视为if...else...的简写形式,因此可以用于多种场合。

var myVar;
console.log(myVar ?'myVar has a value' :'myVar does not have a value'
)
// myVar does not have a value
复制代码

上面代码利用三元运算符,输出相应的提示。如果过变量有 value 值,输出?前面的值,如果没有值,输出后面的值。

var msg = '数字' + n + '是' + (n % 2 === 0 ? '偶数' : '奇数');
复制代码

上面代码利用三元运算符,在字符串之中插入不同的值。


(5) 变量

1.概念:变量是对“值”的具名引用。变量就是为“值”起名,然后引用这个名字,就等同于引用这个值。变量的名字就是变量名。(变化的量,在JS程序中,用于存储数据的容器。)

2.如何在JS程序中使用变量?

   a) 声明变量:告诉浏览器,我要使用这个变量;var 变量名称;//这是声明变量的语法。

   b) 初始化变量:给变量赋值;

    变量名称=值;   //=;赋值,将值存储到变量中;

    赋值操作:将等号右边的值(可以是变量)赋值给左边的变量;

   c) 声明并初始化变量

    var 变量名称=值;

      注意:变量使用之前必须要声明;

                只声明不赋值,系统给变量默认值:undefined;

                变量名称用于到内存中存储数据或者是取数据;

d) 定义多个变量;

var a,b,c; 即var 变量名称,变量,变量

e) 关键字和保留字

    关键字:在JS程序中,有特定含义的单词;

    保留字:在JS程序中,与特定含义的单词,但是还没有被JS程序使用。

标识符命名规范:

  •     标识符由字母,数字,下划线,$构成;
  • 标识符的首字母不能为数字:var 8a;//错误
  • 标识符不能为关键字或者是保留字;var var; //错误
  • 约定俗称:标识符要见名知意;
  • 约定俗成:标识符要使用驼峰式命名;变量使用小驼峰(第一个单词首字母小写);
            getElementById //小驼峰    GetElementById //大驼峰
  • JS严格区分大小写。

(6) 数据类型 typeOf()

  基本数据类型:typeof()变量,获取变量的数据类型;

a) 数字类型: 整数:十进制:0-9 ;   浮点数(小数)

b) 字符串类型:用单引号或者双引号括起数据,字符串,由字符(文本)构成;

c) 布尔类型:用于判断    true:真    false:假

d) 特殊类型

  • null:代表空值,一般清除资源的时候用,初始化变量;
  • undefined:代表变量未初始化;
  • NaN:Not a Number 不是一个整数,非数字之间的运算,结果为NaN;
  • isNaN(s)判断是否NaN(不是数字),如果该字符里不是全数字,则返回true;如果是全数字,则返回false。
引用数据类型

    a)数组   b) 对象(函数)

(7) 运算符

 a) 加法运算符 基本规则:(+)是最常见的运算符,用来求两个数值的和。1+1 //2

   JavaScript 允许非数值的相加 true+true //2    1+true //2

  上面代码中,第一行是两个布尔值相加,第二行是数值与布尔值相加。这两种情况,布尔值         都会自动转成数值,然后再相加。

 比较特殊的是,如果是两个字符串相加,这时加法运算符会变成连接运算符,返回一个新的字   符串,将两个原字符串连接在一起。

"a"+"bc" //"abc"复制代码

 如果一个运算子是字符串,另一个运算子是非字符串,这时非字符串会转成字符串,再连接在   一起。

1+"a" //"1a"
false+"a" //"false"复制代码

 加法运算符是在运行时决定,到底是执行相加,还是执行连接。也就是说,运算子的不同,导   致了不同的语法行为,这种现象称为“重载”(overload)。由于加法运算符存在重载,可      能执行两种运算,使用的时候必须很小心。

"3"+4+5 //"345"
3+4+"5" //"75"复制代码

 除了加法运算符,其他算术运算符(比如减法、除法和乘法)都不会发生重载。它们的规则   是:所有运算子一律转为数值,再进行相应的数学运算。

 对象的相加  如果运算子是对象,必须先转成原始类型的值,然后再相加

b) 包括加法运算符在内,JavaScript 共提供10个算术运算符,用来完成基本的算术运算。

  • 加法运算符x + y

  • 减法运算符x - y
  • 乘法运算符x * y
  • 除法运算符x / y
  • 指数运算符x ** y
  • 余数运算符x % y
  • 自增运算符++x 或者 x++
  • 自减运算符--x 或者 x--
  • 数值运算符+x
  • 负数值运算符-x

余数运算符%)返回前一个运算子被后一个运算子除,所得的余数。需要注意的是,运     算结果的正负号由第一个运算子的正负号决定 

-1%2 //-1
1%-2 //1复制代码

所以,为了得到负数的正确余数值,可以先使用绝对值函数。

c) 关系运算符 用于比较两个值的大小,然后返回一个布尔值,表示是否满足指定的条件。

注意,比较运算符可以比较各种类型的值,不仅仅是数值。JavaScript 一共提供了8个比较运算符。

  • < 小于运算符
  • > 大于运算符
  • <= 小于或等于运算符
  • >= 大于或等于运算符
  • == 相等运算符(只判断值是否相等)
  • === 严格相等运算符(判断值和数据类型,叫全等或恒等)
  • != 不相等运算符
  • !== 严格不相等运算符

 d) 赋值运算符(Assignment Operators)用于给变量赋值。最常见的赋值运算符,当然就是等号(=var x=1;  var x=y;

赋值运算符还可以与其他运算符结合,形成变体。下面是与算术运算符的结合。

x=x+y; <=> x+=y;
x=x-y; <=> x-=y;
x=x*y; <=> x*=y;
x=x/y; <=> x/=y;
x=x%y; <=> x%=y;
x=x**y; <=> x*=y;复制代码

e) 逻辑运算符

布尔运算符用于将表达式转为布尔值,一共包含四个运算符。

  • 取反运算符:!
  • 且运算符:&&
  • 或运算符:||
  • 三元运算符:?:

(8) 函数

(9) 数组

(10) 字符串

(11) 作用域

(12) 原形

(13) 闭合

(14) JS面向对象设计

2. DOM(文档对象模型):对网页的操作,即对浏览器(可看做容器)内的内容进行操作

DOM: Document 整篇文档  Object 文档对象  Model 模型 

(选项卡,轮播图,更改文档结构,购物车,楼梯导航;这些是DOM里边最基础的)

Dom树(层级嵌套)


3.  BOM(浏览器对象模型):对浏览器本身进行操作。

Browser Object Model

编写JavaScript程序

1. 所有的js程序都要写在script标签中

2. console.log(“输出的信息”)

a) 输出的信息要用引号括起来     b) 每写完一条语句,要以分号结束    

 c) 编程中用到的标点符号,都要使用英文的。

3. script标签:嵌入js代码

a) script标签可以写在html中的任何地方,并且html中可以有多个script标签

b)  html中的代码:都是从上往下逐条执行。

c) script标签中常用的属性:

 i.  type:规定脚本语言的类型,text/javascript

ii.  src:资源所在的路径,引入外部的js文件,script中添加的代码被忽略。

4. 弹出框提示:

window.alert(“提示信息”):使用窗口的提示框功能输出提示信息。

注: a) alert阻塞之后的代码执行。   b) window可以省略。

c) alert中提示信息的换行

5. 单双引号:  在提示信息中,显示引号;内部使用双引号,外部使用单引号;

console.log('"职位介绍"'); console.log("<input type='text' />");

6. 往网页中输出内容:(HTML代码)

a) document.write(“html代码”):将html代码写入到网页中。

i.  document:文档,所有的页面都是文档,可以认为是网页

i.  write:写

7.  1. confirm(“提示信息”):出现一个确认框(提示信息、确认按钮、取消按钮);

a) 提示用户是否确定对信息的操作。

避免用户误操作当点击确定的时候,返回一个确认的结果true(真)

当点击取消的时候,返回一个取消的结果false(假)

confirm("确定删除吗?");//返回真或者假

console.log(confirm("确定删除吗?"));

8. prompt(“提示信息”):出现一个输入框,提示用户输入信息的。开发时不用。

9.  javascript注释:被浏览器忽略不执行的内容。

a) 用来说明代码的功能    

b) 两种注释方式:  i.单行注释://            i.多行注释:/* */




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

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

相关文章

shell结合expect写的批量scp脚本工具

转载链接&#xff1a;http://www.jb51.net/article/34005.htm expect用于自动化地执行linux环境下的命令行交互任务&#xff0c;例如scp、ssh之类需要用户手动输入密码然后确认的任务。有了这个工具&#xff0c;定义在scp过程中可能遇到的情况&#xff0c;然后编写相应的处理语…

ASP记数器

这两天有好几个老的ASP网站要改&#xff0c;其中有要求加记数器&#xff0c;为图简单&#xff0c;就用文本文件的形式存储记数。以前用ifream的形式嵌入&#xff0c;不能很好的控制记数器显示的风格&#xff0c;现在改进了一下&#xff0c;可以很好的与嵌入板块风格结合了。把做…

php利用openssl实现RSA非对称加密签名

转载链接&#xff1a;http://liuxufei.com/weblog/jishu/376.html 1. 先用php生成一对公钥和私钥 $res openssl_pkey_new(); openssl_pkey_export($res,$pri); $d openssl_pkey_get_details($res); $pub $d[key]; var_dump($pri,$pub); 2. 保存好自己的私钥&#xff0c;把公…

[转] DevExpress 第三方控件汉化的全部代码和使用方法

DevExpress.XtraEditors.Controls 此控件包中包含的控件最多&#xff0c;包括文本框&#xff0c;下拉列表&#xff0c;按钮&#xff0c;等等 DevExpress.XtraGrid 网格 DevExpress.XtraBars 菜单栏 和 工具栏 DevExpress.XtraNavBar 导航条 DevExpress.XtraPr…

QPM 性能监控组件总篇

QPM &#xff08;Quality Performance Monitor&#xff09; 是一个质量性能监控组件&#xff0c;可以很方便的查看当前 App 的性能和常用数据。目前主要运行在 Android 平台上&#xff0c;通过集成 QPM 组件&#xff0c;可以在 App 中通过悬浮窗可视化相关实时数据。意在帮助广…

福音!微信个人公众号可以改名了!

微信个人公众号可以改名了&#xff01;&#xff01;&#xff01;今年&#xff0c;我们学校从景德镇陶瓷学院更名为景德镇陶瓷大学&#xff0c;但苦于微信限制&#xff0c;很多微信公众号无法更名。很多组织社团就放弃了原先的关注量&#xff0c;重新申请注册账号。当前我们的订…

js list删除指定元素_删除js数组中的指定元素,有这两步就够了

js数组是js部分非常重要的知识&#xff0c;有时我们有这么个需求js数组删除指定元素&#xff0c;先定义一个函数来获取删除指定元素索引值&#xff0c;然后用js数组删除的方法&#xff0c;来删除指定元素即可&#xff0c;就两步不难&#xff0c;很简单。1、JS的数组对象定义一个…

sudo 安装 常见错误

运行环境Linux&#xff1a; 1、sudo&#xff1a;安装 apt-get install sudo 2、sudo: must be setuid root错误解决方法. ls -l /usr/bin/sudo chown root:root /usr/bin/sudo chmod 4755 /usr/bin/sudo reboot 3、sudo&#xff1a;提示用户无权限之类 在 /etc/…

慕课网高并发实战(一)-并发与高并发基本概念

课程网址 并发&#xff1a; 同时拥有两个或者多个线程&#xff0c;如果程序在单核处理器上运行&#xff0c;多个线程交替得换入或者换出内存&#xff0c;这些线程是同时“存在”的&#xff0c;每个线程都处于执行过程中的某个状态&#xff0c;如果运行在多核处理器上&#xff…

2009最经典名句

一&#xff1a;我的优点是&#xff1a;我很帅&#xff1b;但是我的缺点是&#xff1a;我帅的不明显. 二&#xff1a;谈钱不伤感情&#xff0c;谈感情最他妈伤钱。 三&#xff1a;我诅咒你一辈子买方便面没有调料包。 四&#xff1a;会计说&#xff1a;“你晚点来领工资吧&#…

计算机协会丨让技能得到提升,让思维受到启迪

“ 各位2016级新生&#xff0c;新的学期马上就要开始了&#xff0c;学校的各个组织和社团你真的了解了吗&#xff1f;在眼花缭乱的社团里如何找到自己真正喜欢的呢&#xff1f;或许看完计算机协会的纳新微信你就都明白啦&#xff01;关键词&#xff1a;计算机协会景德镇陶瓷大学…

ondestroy什么时候调用_尾调用和尾递归

尾调用1. 定义尾调用是函数式编程中一个很重要的概念&#xff0c;当一个函数执行时的最后一个步骤是返回另一个函数的调用&#xff0c;这就叫做尾调用。注意这里函数的调用方式是无所谓的&#xff0c;以下方式均可&#xff1a;函数调用: func()方法调用: obj.method()call调用:…

查看/修改Linux时区和时间

转载链接&#xff1a;http://blog.csdn.net/colincjl/article/details/6133036 查看/修改Linux时区和时间 一、时区 1. 查看当前时区 date -R 2. 修改设置时区 方法(1) tzselect 方法(2) 仅限于RedHat Linux 和 CentOS timeconfig 方法(3) 适用于Debian dpkg-reconfigure tzdat…

dhl:使用return RedirectToAction()和 return view()

一个Action&#xff1a; Code/// <summary> /// Friend好友的地 /// </summary> /// <returns></returns> public ActionResult FriendFarm(string pid) {BLL.DTOFarm farm new AppleGrange.BLL.DTOFarm(pid); …

【更名通知】将以个人名义继续更新维护

这是我&#xff08;2013年任职计算机协会会长&#xff09;在2013年申请的公众号。由于2016年学校陶院更名为陶大&#xff0c;在当时公众号无法修改名称。后来计协的的学弟学妹申请了新的公众号"陶大计算机Association"&#xff0c;大家可以前往关注&#xff0c;所以该…

CentOS7.6 MySQL8环境搭建 配置远程登录 字符集UTF8 简单密码

一、环境准备 1、清理环境中系统自带的MySQL &#xff08;1&#xff09;删除系统自带的MySQL或Mariadb yum remove mysql-libs &#xff08;2&#xff09;查询系统中是否还有残余的依赖包 rpm -qa | grep mariadb &#xff08;3&#xff09;删除rpm依赖包 rpm -e --nodeps mar…

radio切换控制div显示_JavaScript连载31图片动态切换以及关闭图片案例

一、图标切换31.1点击那两个按钮可以做到轮番显示图片二、关闭图片案例31.2点击右上角的叉&#xff0c;图片会消失。三、源码&#xff1a;D31_iconSwitch.htmlD31_2_CloseImage.html地址:https://github.com/ruigege66/JavaScript/blob/master/D31_iconSwitch.htmlhttps://gith…

jQuery 1.9+ 移除$.browser方法

转载链接&#xff1a;http://blog.csdn.net/czplplp_900725/article/details/8704438 jQuery 从 1.9 版开始&#xff0c;移除了 $.browser 和 $.browser.version &#xff0c;取而代之的是 $.support。 在更新的 2.0 版本中&#xff0c;将不再支持 IE 6/7/8。 以后&#xff0c;…

ASP.NET跨页传值方法汇总

方法一&#xff1a;问号传值&#xff08;Response.Redirect方法&#xff09;1&#xff1a;源页&#xff1a;在按钮的点击事件程序中写入Response.Redirect方法&#xff0c;在其中使用问号传值。如&#xff1a;Response.Redirect("Default2.aspx?id"txtId.Text.Trim(…

工作一年后,我有些感悟(写于2017年)

时间拉回到2016年5月23日&#xff0c;当天拍毕业照&#xff0c;晚上是大学毕业酒会&#xff0c;那一晚整个酒店都弥漫着伤感的气息。那一晚大家为了找KTV拖延到很晚&#xff0c;最后一群人选择来到了操场&#xff0c;凌晨两点多一群人还在操场上玩着游戏。5月25日离校&#xff…