JS基础语法 day01笔记

  javaScript:一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML网页上使用,用来给HTML网页增加动态功能。JavaScript兼容于ECMA标准,因此也称为ECMAScript。

一.JS的三种使用方式:
1.行内JS:写在HTMl标签的JS代码
2.内部JS: 写在
注:如果

注意:在头部声明你的变量
对于大多数程序员来说并不知道 JavaScript 变量提升。
如果程序员不能很好的理解变量提升,他们写的程序就容易出现一些问题。
为了避免这些问题,通常我们在每个作用域开始前声明这些变量,这也是正常的 JavaScript 解析步骤,易于我们理解。
五.1) JavaScript 中有 6 种数据类型,其中有五种简单的数据类型:
1.Undefined、Null、布尔、 数值和字符串。一种复杂数据类型 Object。
2.数 值(Number): 整数和小数(比如 1 和 3.14)
3.字符串(String): 字符组成的文本(比如"Hello World")
4.布尔值(Boolean):true(真)和 false(假)两个特定值
5.Undefined: 表示“未定义”或不存在,即此处目前没有任何值
6.Null: 表示空缺,即此处应该有一个值,但目前为空
2).对象(object)(引用) : 各种值组成的集合
1.对象(object){name:”zhangsan”,age:”18”}
2.数组(array)[1,2,3]
3.函数(function)function test() {}
3)typeof 操作符
typeof 操作符是用来检测数据类型。
说明:1.typeof null 返回的是 object 字符串
2.函数不是数据类型,但是也可以使用 typeof 操作符返回字符串。
typeof 操作符可以操作变量也可以操作字面量。
注意:函数在 JavaScript 中是对象,不是数据类型,所以使用 typeof 区分 function 和object 是有必要的
4)undefined:undefined 类型的值是 undefined。
undefined 是一个表示"无"的原始值,表示值不存在。
出现 undefined 的常见情况:
1.当声明了一个变量而没有初始化时,这个变量的值就是 undefined
2.当函数需要形参,但未传递实参时
3.函数没有返回值,但定义了变量接收
5)null:null 类型是只有一个值的数据类型,即特殊的值 null。它表示空值,即该处的值现在为空,
它表示一个空对象引用。
使用 Null 类型值时注意以下几点:
1.使用 typeof 操作符测试 null 返回 object 字符串。
2.undefined 派生自 null,所以等值比较返回值是 true。所以,未初始化的变量和赋值为 null 的变量相等
6) 数值型:数值型包含两种数值:整型和浮点型。
1.所有数字(整型和浮点型)都是以 64 位浮点数形式储存。所以,JS 中 1 与 1.0 相等,
2.而且 1 加上 1.0 得到的还是一个整数。浮点数最高精度是 17 位小数,由于浮点数运算时可能不精确,尽量不要使用浮点数做判断。
2.在存储数值型数据时自动将可以转换为整型的浮点数值转为整型。
3.对于过大或过小的数值,可以使用科学计数法来表示
4.Infinity、-Infinity
超过了表数范围,出现 Infinity(正无穷)或者-Infinity(负无穷)
isFinite()函数可以确定是否超出范围:
true:没有超出;false:超出了
7)NaNa;表示非数值(Not a Number),是一个特殊的值。
如:将字符串解析成数字出错的场合。
console.log(parseInt(“abc”));//parseInt 方法将字符串解析为数值,但若无法解析,返回 NaN
注意:
NaN 不等于任何值,包括它本身,因为它不是一个值
NaN 与任何数(包括它自己)的运算,得到的都是 NaN
isNaN()可以用来判断一个值是否为 NaN
true:不是数字;false:是数字
8)字符串
使用 ’ ’ 或 " "引号,如:‘sxt’,“good”。
使用加号’+’进行字符串的拼接,如:console.log(‘hello’ + ’ everybody’);
9)对象
instanceof 运算符
typeof 操作符对数组(array)和对象(object)的显示结果都是 object,那么可以利用
instanceof 运算符,它可用于判断一个变量是否某个对象的实例
六. 类型转换
1.自动类型转换
2.函数转换
1)parseInt()
1.parseInt()在转换之前,首先会分析该字符串,判断位置为 0 处的字符,判断它是否是个有效数字,如果不是,则直接返回 NaN,不再继续,如果是则继续,直到找到非字符
2.parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由 parseInt()方法的第二个参数指定的
3.如果十进制数包含前导 0,那么最好采用基数 10,这样才不会意外地得到八进制的值
2)parseFloat()
parseFloat()方法与 parseInt()方法的处理方式相似,但是parseFloat()可以识别第一个小数点
3.显示转换
1.toString()函数将内容转换为字符串形式,其中 Number 提供的
2.toString()函数可以将数字以指定的进制转换为字符串,默认为十进制。
3.Number 还提供了 toFixed()函数将根据小数点后指定位数将数字转为字符串,四舍五入

	4.强制转换
JS 为 Number、Boolean、String 对象提供了构造方法,用于强制转换其他类型的数据,此时操作的是整个数据,而不是部分.
  1. Number()
    如果是Boolean值,true和false值将分别被转换为1和0。
    如果是数字值,只是简单的传入和返回。
    如果是null值,返回0。
    如果是undefined,返回NaN。
    如果是字符串:
      a. 如果字符串中只包含数字时,将其转换为十进制数值,忽略前导0
     b. 如果字符串中包含有效浮点格式,如“1.1”,将其转换为对应的浮点数字,忽略前导0
      c. 如果字符串中包含有效的十六进制格式,如“0xf”,将其转换为相同大小的十进制数值
      d. 如果字符串为空,将其转换为0
      e. 如果字符串中包含除上述格式之外的字符,则将其转换为NaN
    如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString()方法,然后再依照前面的规则转换返回的字符串值。
      例: 
        var num1 = Number(“Hello world”);       //NaN

var num2 = Number("");            //0

var num3 = Number(“0000011”);        //11

七. 数组:
1)数组的特点:
1.数组的长度是可变的
2.数组的类型可以不一样
3.不存在下标越界

2)数组的定义:
			1.隐式创建
			  var 变量名 = [值1,值2,...];
			2.直接实例化
				var 变量名 = new Array(值1,值2,...);
			3.实例化并指定长度
				var 变量名 = new Array(size);
		
 3)获取数组的长度:数组.length

4)数组的遍历
数组的遍历即依次访问数组的每一个元素 ,JS 提供三种遍历数组的方式:
1.普通 for 循环遍历
for(var i = 0; i < 数组名.length; i++) {

				}
				注:可以拿到undefinded的值,无法获取数组中属性对应的值
  2.for ... in
				for(var i in 数组) {
					// i是下标或属性名
				}
				注:无法拿到undefinded的值,可以获取数组中属性对应的值
  3.foreach
				数组.foreach(function(element,index){
					// element:元素;index:下标
				});
				注:无法获取属性对应的值与undefinded的值
				
			* for --  不遍历属性
			* foreach -- 不遍历属性和索引中的 undefined
			* for in -- 不遍历索引中的 undefined
		
5)数组提供的方法
  1.push 添加元素到最后
  2.unshift 添加元素到最前
  3.pop 删除最后一项
  4.shift 删除第一项
  5.reverse 数组翻转
  6.join 数组转成字符串

7.indexOf 数组元素索引
8.slice 截取(切片)数组,原数组不发生变化
9.splice 剪接数组,原数组变化,可以实现前后删除效果
10.concat 数组合并
Java数组创建跟JS区别
Java: int[] a=new int[5];
int[] b={1,2,3};
int[] c=new int[]{1,2,3};
JS: var arr1=[1,2,3];
var arr2=new Array(5);
var arr3=new Array(1,2,3);
八.函数
函数,即方法。函数也是对象。
1)函数的定义
定义方式有3种:
1.函数声明语句
function 函数名([形参]) {}
调用:函数名([实参]);
2.函数定义表达式
var 变量名/函数名 = function([形参]){}
调用:变量名([实参])/函数名([实参]);
3.Function构造函数
var 函数名 = new Function(‘参数1’,‘参数2’,‘函数的主体内容’);
调用:函数名([实参]);
注:构造函数的最后一个参数是函数体。
注意:
1、js 中的函数没有重载,同名的函数,会被后面的函数覆盖。
2、js 中允许有不定数目的参数,后面介绍 arguments 对象

3)函数名的提升(了解)
JavaScript 引擎将函数名视同变量名,所以采用 function 命令声明函数时,整个函数会像变量声明一样,被提升到代码头部。所以,下面的代码不会报错
但是,如果采用赋值语句定义函数,JavaScript 就会报错。
九. 函数的参数、调用和return
1)参数
函数运行的时候,有时需要提供外部数据,不同的外部数据会得到不同的结果,这种外部
数据就叫参数,定义时的参数称为形参,调用时的参数称为实参
 1.实参可以省略,那么对应形参为 undefined
 2.若函数形参同名(一般不会这么干):在使用时以最后一个值为准。
 3.可以给参数默认值:当参数为特殊值时,可以赋予默认值。
4.参数为值传递,传递副本 ;引用传递时传递地址,操作的是同一个对象

2)函数的调用
1.常用调用方式:函数名([实参]);
存在返回值可以变量接收,若接收无返回值函数则为 undefined
2.函数调用模式
3.方法调用模式
4.call()和apply()
注:谁调用函数,this就指向谁

3)匿名函数立即调用
			1.匿名函数:function ([参数]){}
			2.调用:(function ([形参]) {})([实参]);
			在函数只被使用一次的情况下可以使用这种方式,简便省事
			
4)return 语句
1.函数的执行可能会有返回值,需要使用 return 语句将结果返回。return 语句不是必需的,
		   2.如果没有的话,该函数就不返回任何值,或者说返回 undefined。
			3.作用:在没有返回值的方法中,用来结束方法。

有返回值的方法中,一个是用来结束方法,一个是将值带给调用者。
十. arguments 对象和函数的方法及属性
1.arguments对象可以得到函数的实参数量
2.函数名.name 得到函数名称
3.函数名.length 得到函数的形参数量
4.函数名.toString() 得到函数的源码
十一. 函数的作用域
函数作用域:全局(global variable)和局部(local variable)
1.全局变量与局部变量同名问题
2.在函数中定义变量时,若没有加 var 关键字,使用之后自动变为全局变量
3.变量作用域提升
例: function fn() {
var num = 10; // 这是个局部变量,与全部变量毫无关系
console.log(num); // 就近原则
var b = 2; // 局部变量
c = 3; // 不用var修饰符声明的变量时全局变量
}
十二. 闭包的形成:
1.外部函数内部嵌套内部函数
2.内部函数中使用外部函数的环境
3.外部函数返回内部函数
闭包的作用:
1.获取函数内部的变量
2.保存变量的值在内存中
3.避免变量名重复
例: function waterFlower(total) {
// 定义内部函数,执行浇水过程 (每次浇水,水容量减50ml)
function water(flower) {
// 当水容量大于50ml则浇水
if (total >= 50) {
// 每次浇水减50
total = total - 50;

			} else {
				// 如果没水,则自动加水
				document.write("<h4>正在重新装水....</h4>");
				total = 200;
				// 浇水
				total = total - 50;
				// 
			}
			document.write("给"+flower+"浇水50ml,剩余" + total + "ml的水!<br>");
		}
		// 返回内部函数
		return water;
	}
	// 装水
	var t = waterFlower(200);
	// 浇水
	t("桃花"); 
	t("兰花");
	t("玫瑰花");
	t("菊花");
	t("桂花");

十二. Date:
//获取
◦ getFullYear()年, getMonth()月, getDate()日,
◦ getHours()时,getMinutes()分,getSeconds()秒
//设置
◦ setYear(), setMonth(), …
◦ toLoacaleString()
说明:
1.getMonth():得到的值:0~11(1 月~12 月)
2.setMonth():设置值时 0~11
3.toLocaleString():可根据本地时间把 Date 对象转换为字符串,并返回结果。
例: script type=“text/javascript”>
// 得到系统当前时间
var mydate = new Date();
console.log(mydate);
// toLocaleString():可根据本地时间把 Date 对象转换为字符串,并返回结果。
console.log(mydate.toDateString());
console.log(mydate.toLocaleString());
var mon = mydate.getMonth()+1;
if (mon < 10) {
mon = “0” + mon;
}
var newDate = mydate.getFullYear() + “-” + mon + “-” + mydate.getDate();
newDate += " " + mydate.getHours() + “:” + mydate.getMinutes() + “:” + mydate.getSeconds();
console.log(newDate);

十三. JS对象:JS中一切数据皆对象。
1)定义对象
JS 创建自定义对象,主要通过三种方式:
1.字面量形式创建对象
var 变量名 = {}; // 空对象
var 变量名 = {键:值,…};
2.通过 new Object 对象创建
var 变量名 = new Object();
3.通过 Object 对象的 create 方法创建对象
var 变量名 = Object.create(null或对象);
2)对象的序列化和反序列化
序列化即将 JS 对象序列化为字符串,反序列化即将字符串反序列化为 JS 对象。JS 中通过
调用 JSON 方法,可以将对象序列化成字符串,也可以将字符串反序列化成对象 。
序列化对象,将对象转为字符串
JSON.stringify(object)
反序列化,将一个 Json 字符串转换为对象。
JSON.parse(jsonStr)

		3)eval()

1.可借助 eval()动态函数,将参数字符串解析成 js 代码来执行,只接受原始字符串作为参数
eval(“console.log(‘你好’)”);//控制台输出你好
2.可将 json 串转为 json 对象
a.第一种解析方式:得到的 json 对象名就是 jsonObj
eval(“var jsonObj = " + jsonStr);
b.第二种解析方式:对象中有多个属性
var jsonObj = eval(”(" + jsonStr + “)”);
由于 json 是以{ }的方式来开始以及结束的,在 eval 中会被当成一个语句块来处理,故必 须强制将它转换成一种表达式。加上圆括号是使 eval 函数在处理时强制将括号内的表达式转化为对象而不作为语句来执行。
c.第二种解析方式:对象中只有一个属性
eval(jsonStr);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值