js简介
一、一些概念
1、计算机语言:
2、计算机的组成:
硬件、软件
数据存储
数据存储单位
二、js简介
1、js是什么 是一种面向对象的脚本语言
能做什么
表单动态校验(密码强度检测)(JS产生最初的目的)
网页特效
桌面程序(Electron)
服务端开发(Node.js)
App(Cordova)
控制硬件-物联网(Ruff)
游戏开发(cocos2d-js)
我们熟知的微信小程序、插件扩展、游戏特效、刷浏览量......很多都是可以利用JS开发使用的
浏览器怎么执行js的
浏览器由多个部分组成其中就有:渲染引擎和JS引擎
渲染引擎:用来解析html和css,所称内核
JS引擎:也称为JS解释器。用来读取网页中的JavaScript代码,对其处理后运行
浏览器本身并不会执行JS代码,而是通过设置JavaScript引擎(解释器)来执行JS代码。 JS引擎执行代码时逐行解释每一句源码(转成机器语言),然后由计算机去执行。所以JS 语言归为脚本语言,会逐行解释执行
2、js的组成
ECMAScript( 核心,规范标准)
Document Object Model文档对象模型
BOM 浏览器对象模型,操作浏览器
(1)、ECMAScript ( JavaScript的核心 是规范标准)
------描述了语言的基本语法(var、for、if、array等)和数据类型(数字、字符串、布尔、函数、对象(obj、[]、{}、null)、未定义)。
------只学习基础语法,做不了常用的网页交互效果,为后面的内容打基础,做铺垫
(2)、DOM (Document Object Model文档对象模型,可以去操作网页)
Document(文档)
指的是XML和HTML的页面,当你创建一个页面并且加载到Web浏览器中,
DOM就在幕后悄然而生,它会把你编写的网页文档转换成一个文档对象。
Object(对象)
js对象大致可以分为以下三种:
自定义对象,例如:var obj = {}
内置对象,无需创建,可直接使用,例如:Array、Math和Data等
宿主对象,浏览器提供的对象,例如:window、document
DOM中主要关注的就是document, document对象的主要功能就是处理网页内容。
Model(模型)代表着加载到浏览器窗口的当前网页,可以利用JavaScript对它进行读取
输入输出语句
创建一个js书写环境
<script>
// js语言环境
// 1、alert 页面弹出
// alert("hello");//简写
// window.alert("hi"); //完整写法
// 2、控制台输出
// console.log("<a href='#'>你好123</a>");
// 3、页面输出
// document.writeln("12345");
// document.writeln("<h1>123456</h1>");//可以识别标签
// 4、输入语句
// prompt("你叫什么名字");
// document.writeln(prompt("你叫什么名字"));
// alert(prompt("你叫什么名字"));
// console.log(prompt("你叫什么名字"));
// 5、输入语句--得到的时true或false,常用于做逻辑判断
// console.log(confirm("你确定要删除吗?"));
</script>
一、js注释 (注释中的内容不会被执行,但可以在源代码中查看)
1、多行注释,默认的快捷键:shift+alt+a
2、单行注释,ctrl+/ 只对后面的内容有效
3、注释作用: 养成良好的编写注释的习惯,可以通过注释对代码进行一些调试
二、为了方便信息的输入输出,JS中提供了一些输入输出语句
1、控制浏览器弹出一个警告框
2、让计算机在页面中输出一个内容
3、向控制台输出一个内容
4、用户输入数据
三、js代码是从上到下,一行行执行的,有执行顺序
代码编写位置
书写位置1
<script>
console.log("hello1");
</script>
书写位置2
<script>
console.log("hello2");
</script>
书写位置3
<script src="./index.js">
如果script是引入外部js文件,其内部不能书写其他的js代码
console.log('hello');
</script>
书写位置4:
事件属性 的属性值内
事件:交互的行为
事件属性:
onclick 当点击时
onmouseenter/onmouseover 鼠标移入
onmouseleave/onmouseout 鼠标移出
onmousemove 鼠标在范围内移动
······
-->
css
<!-- <button id="abc" onmousemove="console.log('hello1')">按钮1</button> -->
js的书写位置
第一种方式 标签的事件属性
<button οnclick="alert('你点我了')">点我一下</button>
<a href="JavaScript:alert('你也点我了');">你也点我一下</a>
第二种方式:body标签内书写script标签里
第三种方式:head标签内书写script标签里
第四种方式:外部js文件内,通过<script src=""></script>引入
优势:可以在不同的页面中同时引用,也可以利用到浏览器的缓存机制,推荐使用方式
注意:这个script标签一旦用于引入外部文件了,就不能编写代码了,即使编写了,浏览器也不能识别
js的基本语法
1:js中严格区分大小写
2:js中每一条语句以分号(;)结尾
如果不写分号,浏览器会自动添加,但会消耗一些系统资源
而且有时候,浏览器会加错分号,所以在开发中分号基本都写
3:js中会自动忽略多个空格和换行,所以我们可以利用空格和换行对代码进行格式化
字面量和变量
字面量:固定值,写什么就是什么
console.log("1");
console.log("hello");
变量:可变化的值
声明变量方式一:es5的写法
var a; //声明变量
a = 1; //变量赋值
a = 2; //可重新赋值
console.log(a); //输出变量
var b = 3; //声明变量同时赋值
var b = 5;
b = 4;
console.log(b);
console.log(3);
声明变量方式二:es6的写法
let c = 1; //声明变量并赋值
c = 2;
console.log(b);
声明变量方式三:es6的写法
const n = 123; //const定义的变量,不能被修改
n=234
console.log(n);
let m;
m=456
console.log(m);
const f;//const 定义的变量必须要初始赋值
console.log(x);
var x = 1;
一输出变量,就理解为你在使用这个变量
console.log(x);
console.log(window.x);
console.log(y);
let y = 2;
console.log(window.y);
一、字面量
二、变量
1、声明变量
2、变量赋值
3、更新变量
4、声明特殊
声明多个变量
只声明不赋值
输出未声明变量
不用var声明
同时声明多个变量
let a=1,b=2;
console.log(a);
console.log(b);
let m;//只声明不赋值,拿到的就是undfined
console.log(m);
console.log(x);
f = 1; //如果未声明,直接赋值,默认是使用var声明
面试题:vat let,const定义变量有什么区别
都可以向程序内存中申请空间,定义变量
let const 不可以重复定义相同的变量名
var 定义的变量默认是放在window中, let、const不予顶级对象window挂钩
const 定义的变量不能修改
let const声明的变量存在"暂时性死区",即必须先定义再使用,否则会报错
var可以先使用,再定义,不报错,存在变量提升
const 声明的变量,不能不赋值
在实际开发中,建议使用let,const,一些不允许修改的值,就用const
标识符
标识符(你起的名字)
在js中所有的可以由我们自主命名的,都可以称为标识符
例如:变量名、函数名、属性名都属于标识符
-规则(必须遵守):
a: 标识符号可以含有字母、数字、$、_
b: 标识符不能以数字开头
c: 标识符不能是ES中的关键字或者保留字 eg;var if class static
-规范(可做可不做):
a: 标识符一般都采用驼峰命名法
首字母小写,每个单词的开头字母大写,其余字母小写 eg:helloWorld xxxYyyZzz
b: js底层保存标识符,包含中文,但是千万不要这么用。
c: 变量名字要见名知意
css
<script>
/*
标识符(你起的名字)
在js中所有的可以由我们自主命名的,都可以称为标识符
例如:变量名、函数名、属性名都属于标识符
-规则(必须遵守):
-规范(可做可不做):
*/
// var let = 1;
// console.log(let);
// let if1 = 1;
let myName = "jack"; //小驼峰
let MyName = "tom"; //大驼峰
let a = "dana";
// let mingzi = "lusi";
// console.log(mingzi);
</script>