Javascript基础-ECMAScript语法

Javascript组成

ECMAScript、Web API-DOM/BOM

书写位置

行内样式表

直接在html中写,用script包住。

<body>
	<script>
	</script>
</body>
我们将<script>放在HTML文件的底部附近的原因是浏览器会按照代码在文件中的顺序加载HTML。
如果先加载的JavaScript期望修改其下方的HTML,那么它可能由于HTML尚未被加载而失效。
因此,将JavaScript代码放在HTML页面的底部附近通常是最好的策略。

内部样式表

<body>
	<button onclick=" alert( '逗你玩~~~' )">CSDN</button>
</body>

外部样式表

代码写在以.js结尾的文件里
语法:通过script标签,引入到html页面中。
<body> 
	<script src=”my.js"></script>
</body>

ECMAScript

javascript语言基础,规定了变量,对象,分支语句,循环语句等

注释

//和/*  */

结束符

以;结尾,但;可以写也可以不写

输入输出

1、输出
	document.write('要输出的内容');内容中可以直接输出标签,会被解析
	alert('要输出内容');        弹出警示框
	console.log('控制台打印');  调试用
2、输入
	prompt('请输入你的姓名:');       弹出对话框输入
	返回输入的内容,可以用一个变量来存 let content = prompt('请输入你的姓名:');  
	

数据类型

分类

简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型。
●值类型:简单数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫做值类型
string,number, boolean, undefined, null
●引用类型: 复杂数据类型,在存储时变量中存储的仅仅是地址(引用) ,因此叫做引用数据类型
通过new关键字创建的对象(系统对象、自定义对象),如Object. Array. Date等

堆栈分配

1、栈(操作系统) :由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈;简单数据类型存放到栈里面
2.堆(操作系统) :存储复杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。引用数据类型存放到堆里面
在这里插入图片描述

变量

基础

1、变量声明:
	变量声明有三个:var,let,const
	var老派写法,问题很多,可以淘汰掉。需要用到const 则优先(常量),原因是语义化更好
	(实际开发中也是,比如react框架,基本const)
	(实际开发中,有了变量先给const,如果发现它后面是要被修改的,再改为let)
		PS:数组和对象建议用const存,因为它们存的是首地址,只要不变就可以,数组内部的值可以修改
	let 变量名1,变量名2;         相同变量只能声明一次
2、数组
	let arr=[]
	let arr=[数据1,数据2,……,数据3]
3、常量:用const声明的变量为常量,不允许赋值

数据类型

1、基本数据类型
	number数字型:正数,小数,整数,负数。NaN代表一个计算错误
	string字符串型:''或""包裹的数据,单引号和双引号没有区别,推荐使用单引号
		单引号/双引号可以互相嵌套,但是不以自已嵌套自已(口诀:外双内单,或者外单内双)
		必要时可以使用转义符\输出单引号或双引号
		可以使用+进行字符串拼接
		模板字符串:
		反引号且内容拼接变量时,用${}包住变量:document .write(`我今年${age}岁了`) 
		在wtml中也可以用${}引用js的变量
	boolean布尔型:true,fasle
		"、0、undefined、 null、 false、NaN转换为布尔值后都是false, 其余则为true
	undefined未定义型:不赋值情况下默认
	null空类型:尚未创建的对象
2、引用数据类型
	object对象
3、typeof:通过这个关键字检测数据类型 typeof 变量 or typeof(变量)
4、强制类型转换
	Number(变量)  强制转化为数字,解析不是就是NaN
	parseInt(数据)  只保留整数         console.log(parseInt('12.34px')) 输出12不认识的去掉,小数去掉
		这样写 console.log(parseInt('abc12.34px'))   取不出来 
	parseFloat(数据)  只保留小数 	console.log(parseInt('12.94px'))  输出12.94
	有字符串的加法“”+1,结果是“1”
	减法- (像大多数数学运算一样) 只能用于数字,它会使空字符串”转换为0
	null经过数字转换之后会变为0 
	undefined经过数字转换之后会变为NaN

运算符

1、赋值运算符:++、+=、-=、*=等都可以使用
2、比较运算符:==、=等。字符串也可以使用比较运算
	===:左右两边是否类型和值都相等
		2=='2'返回true,2==='2'返回false
		PS:undefined==null返回true      NaN===NaN返回false
	!==:左右两边是否不全等
3、逻辑运算符:&& || !等

语句

条件分支

if和普通语言一样。三元运算符也一样

	switch(变量){
		case 值1:
			语句;
			break;
		case 值2:
			语句;
			break;
		default:
	}
PS:switch是全等===

循环

while,for和普通语言一样

数组

Array,一种数据类型,是一个对象

1、声明
	let arr = [1,2,'pink',true];
	let arr = new Array(数据1,数据2……)
2.一些函数
	arr.length   长度	
	添加元素:arr.push(新增的内容)   arr.unshift(新增的内容)
		数组.push()方法将-个或多个元素添加到数组的末尾,并返回该数组的新长度(重点)
		arr.push(元素1, .... 元素n)
		arr.unshift(新增的内容)方法将一个或多个元素添加到数组的开头,并返回该数组的新长度
		arr.unshift(元素1,...元素n)
	删除数组:
		数组.pop()方法从数组中删除最后一个元素,并返回该元素的值
		数组.shift()方法从数组中删除第一个元素,并返回该元素的值
		数组.splice()方法删除指定元素
		arr.splice(start, deleteCount)  deleteCount可选,如果省略则默认从指定的起始位置删除到最后 
		arr.splice(起始位置,删除几个元素)

函数

1、声明
	function函数名(参数列表) {
		函数体
		【return 返回值】
	}
	若不传参,默认就为NaN或者null,因此在传参时可以设为默认值
	function函数名(参数1=默认值1,……) {
		函数体
	}
2、说明
	两个相同的函数后面的会覆盖前面的函数
	在Javascript中实参的个数和形参的个数可以不一致
		➢如果形参过多会自动填上undefined 
		➢如果实参过多 那么多余的实参会被忽略(函数内部有一个arguments,里面装着所有的实参)
	如果函数内部,变量没有声明,直接赋值,也当全局变量看,但是强烈不推荐
3、匿名函数
	function() {} 
	1)将匿名函数赋值给一个变量,并且通过变量名称进行调用我们将这个称为函数表达式
	let fn = function (){
		//函数体
	}
	调用即fn()
后期经常使用:
	btn.onclick = function( )
		alert( '我是匿名函数')
	}
	btn.addEventListener (function() {
		alert('弹出")
	})
	2)立即执行函数 
	方式1:(function () { console.log(11) })();  必须加分号
		(函数)();  后面的括号本质上在调用函数,因此后面括号可以加形参 
		(function (x,,y) {
			console. log(x +y)
		})(1, 2); 
		方式2也是如此
	方式2:(function () { console .1og(11) }());
	//不需要调用,立即执行
4、箭头函数
	1)概念:
	JS中=>是箭头函数,是ES6标准中新增的一种新的函数。
	箭头函数表达式的语法比函数表达式更简洁,并且没有自己的this,arguments,super或new.target。
	箭头函数表达式更适用于那些本来需要匿名函数的地方,并且它不能用作构造函数。
	2)语法:
	(param1, param2, …, paramN) => { statements }
	(param1, param2, …, paramN) => expression
	//相当于:(param1, param2, …, paramN) =>{ return expression; }
	// 当只有一个参数时,圆括号是可选的:
	(singleParam) => { statements }
	singleParam => {statements }
	// 没有参数的函数应该写成一对圆括号:
	() => {statements}
	3、举例:
	x => x * x  相当于:
	function (x) {
	    return x * x;
	}

对象

使用

1、声明:let 对象名={
			属性名:属性值,
			方法名:函数
		};    
		let person = {
			name: ' andy',
			sayHi: function() {
				document.write( 'hi~n' )
		}
		属性方法之间必须加逗号,最后可以不加
		属性名可以用“”或''套上(特别是有空格,下划线,中横线时),"属性名"。
		如果加引号,则属性引用时可以用  对象["属性名"]
	 let 对象名 = new object
2、新增对象:对象名.属性 = 新值
3、删除:delete 对象名.属性
4、查:对象.属性名       对象["属性名"]     对象.方法名();
5、遍历对象
	对象没有像数组一样的length属性,所以无法确定长度
	对象里面是无序的键值对,没有规律.不像数组里面有规律的下标
	for (let k in obj) {
		console.log(k) // 打印属性名
		console. log(obj[k]) // 打印属性值
		//不能用obj.k,因为k是字符串,带""
	}
	PS:for in 也能打印数组,此时k就是下标,不过类型是字符串型
6、案例
	let students = [
		{name: '小明',age: 18, gender:'男',hometown:‘河北省'},
		{name: '小红',age: 19, gender:'女, hometown:'河南省'}, 
		{name: '小刚',age: 17, gender:'男',hometown:'山西省'},
		{name: '小丽',age: 18, gender:'女',hometown:'山东省'}
	]
	此时{}里面的就是对象,用student[i].属性名 来引用

内置对象

1、Math对象
	属性:Math.PI
	方法:
		random:生成0-1之 间的随机数(包含0不包括1)
			0~10:Math.floor(Math.random()*(10 + 1))    0~11向下取整,能取到10
			5~10:Math.floor(Math. random() * (5 + 1)) + 5
			N~M:Math.floor(Math. random() * (M - N +1))+N  (可以封装一个函数)
			
			
		ceil:向上取整
		floor:向下取整
		max:找最大数
		min:找最小数
		pow:幂运算
		sqrt:平方根
		abs:绝对值
  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值