学习笔记一

一.作用域

对象:是由函数名(键名)和属性值(键值)组成的数据

JS的执行顺序:

1.语法分析

​ 查找出语法错误

2.预编译

  1. 生成AO(Activation Object)对象 {} ==

  2. 形参和变量作为AO对象的键名(属性名),属性值是undefined

  3. 实参赋值给形参

  4. 函数声明作为AO对象的函数名,把函数作为键名赋值给这个属性名

3.执行JS代码


作用域==>JS代码执行的环境

1.作用域

  • 所有在script标签里面的代码,全都处在全局作用域中
  • 全局作用域在页面打开时创建全局对象GO(window对象),页面关闭时销毁GO对象、
  • 全局作用域中的变量是GO对象的属性名,变量的值是GO对象的属性值

2.函数作用域

  • 所有在函数里面的代码,都处在函数作用域中
  • 函数作用域在函数执行时创建AO对象,在函数结束时销毁AO对象
  • 函数作用域中的变量是AO对象的属性名,变量的值是AO对象的属性值
  • 当下一次执行函数时,会创建全新的AO对象

二.闭包&&自执行函数

闭包的用处:

  1. 实现累加值==》对父级函数内部变量的操作
  2. 可以做缓存
  3. 构建模块化实例
  4. 私有化变量

什么是闭包:

​ 当内部函数被保存在外部时,由于内部函数的作用域链上存在内部函数创建时的环境(即父级函数和祖先函数的AO对象,全局对象GO),导致内部函数可以顺着作用域链寻找变量,所以形成了闭包,同时内部函数的作用域链上(即父级函数和祖先函数的AO对象,全局对象GO)无法被垃圾回收机制回收,导致了内存泄漏。


函数声明转换成函数表达式

第一种

	(function()
	{
	console.log(1)
	})(/*函数表达式外加一个括号就可以运行*/)
	(function()
	{
	console.log(1)
	}(/*括号写在里面也可以运行*/))

第二种

	!function()
	{
	console.log(1)
	}

第三种

	~function()
	{
	console.log(1)
	}

第四种

	+function()
	{
	console.log(1)
	}

第五种

	-function()
	{
	console.log(1)
	}

立即执行函数==》一次性函数

特点:只执行一次,在函数执行结束后,整个函数从内存中销毁,不占据内存空间

	(function init(a,b,c){
	return a+b+c
	})(2,3,4,)

三.对象初探

例子:

	var obj={
	name :'heaven',
	age:18,
	sex:'male'
	}
  • 标准对象是由很多对键值组成的,每队键值用逗号隔开;
  • 在控制台中对象是按照先0-9再a-z来排序的;
  • 对象的键名一定是字符串,属性值是任意数据类型(即无论在键名位置输入数据都会转换成字符串类型);

对象的增添改查:

	obj['height']='18厘米'//添加键名
	obj.height='18厘米'//添加键值值
	delete obj.height//删除键值
	obj.height='8厘米'//改变键值
	obj.height//查询键值

遍历对象的方式

	for (var key in obj)
	{
	console.log(key,obj[key]);
	}


四.字符串的常用方法

字符串的常用方法

	var str='hello'
	str.charAt(索引值)//获取字符串索引位置的字符
	str.charCode(索引值)//获取字符串索引位置的字符的Unicode编码(0:48   a:97   A:66)
	var a =String.fromCharCode(Unicode编码)//用Unicode编码来查到对应的字符
	str.toUppercCase()//把字符串变大写,返回的是一个新的字符串,没有改变原来的字符串
	str.toLowerCase()//与toUpperCase相对变小写,返回的是一个新的字符串,没有改变原来的字符串
	str.indexOf(字符)//从左到右查询,返回字符在str中的位置,如果返回的值是-1,就说明字符不在str中
	str.lastIndexOf(字符)//从右到左,返回字符在str中的位置,如果返回的值是-1,就说明字符不在str中
	

模拟JS自带的toUpperCase

  1. 遍历字符串

  2. 判断如果是小写字母就变大写

  3. 把结果抛出来

    	function myUpper(target){
    		var newStr='';
    		for(var i=0;i<target.length;i++)
    		{
    			var charCode=str.charCodeAt(i);//储存每个字母的字符编码
    			if(charCode>=97&&charCode<=122)//判断每个字符是不是小写
    			{
    				newStr+=String.fromCharCode(charCode-32)
    			}
    			else
    			{
    				newStr+=target[i];
    			}
    		}
    		return newStr;
    	}
    	myUpper(str);
    

字符串的截取

	var str='hello'
	str.substr(n,m)//从索引n开始截取m个字母
	
	str.slice(n,m)//从索引n开始截取m-n个字母,支持负值索引(最后一个字母是-1,往前数-2,-3,等等)
	str.substring(n,m)//从索引n开始截取m-n个字母,不支持负值索引
	str.split(字符)//用指定的字符来分割字符串
	(如:str.split(e)   结果:['h','llo'])
	str.replace(x,y)//用x来代替原字符串中的y

去除字符串中的空格

	str.trimLeft()//去除字符串开始的空格
	str.trimRight()//去除字符串结束的空格
	str.trim()//去除字符串开始和结束的空格

合并字符串

	str.concat(字符)//将指定字符或字符串合并到原字符串的尾部

++++

posted @ 2020-09-04 21:41  五猫  阅读(103)  评论(0编辑  收藏  举报

载入天数...载入时分秒...