javascript基本操作及原理学习

 /*
 临时对象测试
   js中临时对象在引用后就会被销毁
 */
function onClick() {
	 var s="hello world";
	 var word=s.substring(s.indexOf(" ")+1,s.length);
	 //alert(word);
	 var s="test";
	 s.len=4;
	 console.log("s.len=:",s.len);//输出:undefined
	 var t=s.len;
	// alert(t);
	var t=s.len=4;
	console.log("s.len= ",t);//4
	console.log("s.len= ",s.len);//undefined

	var s="test",b=1,c=true;
	var S=new String(s);
	var B=new Number(b);
	var C=new Boolean(b);
	console.log("s",S);//==时 s和S是相同的,而在===全等于时,二者就不相同,因为s是String类型,S为Object对象。
	console.log("isTrue",s===S?true:false);//false
	console.log("isTrue",s==S?true:false);//true
	console.log("s",typeof(s));//String
	console.log("s",typeof(S));//Object
	//js中的原始值是无法被更改的,任何情况下都不行,如果调用其它方法,他会重新生成一个
	//对象的值可以被更改
	var h="hello";
	console.log("toUpper",h.toUpperCase());//"HELLO"
	console.log("h",h);//"hello"
	var o={x:1};
	console.log(typeof(o));
	console.log("o.x",o.x);
	o.x=2;
	console.log("o.x",o.x);
	o.y=3;//为对象o生成一个新的属性并赋值
	console.log("o.x",o.x);
	console.log("o.y",o.y);
	var a=[1,2,3];
	a[0]=0;
	a[3]=4;
	//对象为引用类型,任何情况下的将a赋给b,对象本身并没有复制一次,仅仅是赋值的引用值,个人理解:这种赋值二者的基地址是相同的,所以二者全等。
	var a=[];
	var b=a;
	b[0]=1;
	console.log(a[0]);
	console.log("isTrue?",a===b?true:false);

	typechange();
}
function typechange() {
	var s=10+"objects";//10转换成字符串
	var sum="7"*"4";//两个均转化为数字;
	var n=1-"x";//=>NaN ,字符"x"无法转换成数字
	console.log(n);
	n+="objects";//=>objects无法转换为数字
	console.log(s,sum,n);
}

function onDown() {
	/*
	各种类型转换为字符串
	toString()
	*/
     var b=new Boolean(false);
     console.log("b",b);
     console.log([1,2,3].toString());//1,2,3
     console.log((function(x){f(x); }).toString());//function (x){f(x); }
     console.log(new Date(2017,0,1).toString());//Sun Jan 01 2017 00:00:00 GMT+0800
     /*
     valueOf()
               转换为实际的对象 不会返回原始值
     */
     var ob={x:1};
     console.log("ob=",ob.valueOf())//ob= [object Object]
     var d=new Date(2017,1,9);
     console.log("d==",d.valueOf());//1486569600000转换为1970年以来js的内部表示值 以毫秒表示日期
     var a=checkScope();
     console.log("checkScope:",a);
}

     scope="glocal";

function checkScope() {
	//scope="local";
	//myscope="local";
	console.log("scope",scope);
	//return [scope,myscope];
}

/*
  eval()具有改变全局变量的能力,
  但是定义别名调用它时,eval会把字符串当作顶层的全局变量来执行。
 就是说如果在函数中用别名来对一个全局变量进行eval操作时,执行的代码会定义新的全局变量和全局函数,或者
  给全局变量赋值,但却不能使用或者修改主调函数中的局部变量,因此不会影响到函数内的优化
 个人理解:利用别名来操作全局变量时,函数内返回全局变量不会改变,或者称为新的全局变量,而全局变量本身会
 把函数内对全局变量进行操作的方法当作顶层的全局变量来执行,所以函数内返回全局变量未更改,但是全局变量本身更改。
*/
   var  geval=eval;
   var x="global",y="global";
   function f() {
	var x="local";
	eval("x+=‘changed‘;");
	return x;
}
   function g() {
	var y="local";
	geval("y+=‘changed‘;");
	return y;
}
   console.log(f(),x);//localchanged global
   console.log(g(),y);//local globalchanged

</script>
时间: 2024-07-30 13:31:19

javascript基本操作及原理学习的相关文章

JavaScript动画工作原理之(完结篇)

原作者:Steven Riche 发布时间:2014年2月18日 原文链接:http://code.tutsplus.com/tutorials/javascript-animation-that-works-part-4-of-4--net-35263 翻译:子毅 --------- 将JavaScript进行到底 碎碎两句 折腾了一个多月,杂七杂八的事情加在一起,简直糟透了.博客停了大概有一个月了,从今天起一切都是新的,做好自己就OK了 ---------------------------

JavaScript模板引擎原理与用法

这篇文章主要介绍了JavaScript模板引擎原理与用法,结合实例形式详细分析了javascript模版引擎相关概念.原理.定义及使用方法,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下 一.前言 什么是模板引擎,说的简单点,就是一个字符串中有几个变量待定.比如: var tpl = 'Hei, my name is <%name%>, and I\'m <%age%> years old.'; 通过模板引擎函数把数据塞进去, var data = { &q

Android自复制传播APP原理学习(翻译)

 Android自复制传播APP原理学习(翻译) 1 背景介绍 论文链接:http://arxiv.org/abs/1511.00444 项目地址:https://github.com/Tribler/self-compile-Android 吃完晚饭偶然看到这篇论文,当时就被吸引了,马上翻译总结了一下.如有错误欢迎斧正. 该论文的研究出发点比较高大上这里我们就不多说了,简而言之就是想通过移动设备来实现一个自组网,在发生灾难的时候,手机之间能够自动传输关键数据,减少损失.整个目标通过设计一个能够

《Javascript权威指南》学习笔记之十一:处理字符串---String类和正则表达式

一.正则表达式的基本语法 1.概念:正则表达式由普通字符和特殊字符(元字符)组成的文本模式,该模式描述在查找字符串主体时待匹配的一个或者多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配. 普通字符包括所有的大小写字母字符.所有数字.所有标点符号及一些特殊符号.普通字符本身可以组成一个正则表达式,也可以和元字符组合组成一个正则表达式:而元字符则具有特殊的含义,包括().[].{}./.^.$.*.+.?...|.-.?:.?=.?! 2.基本语法 3.优先权含义 二.使用

javascript引擎工作原理

1. 什么是JavaScript解析引擎? 简单地说,JavaScript解析引擎就是能够“读懂”JavaScript代码,并准确地给出代码运行结果的一段程序.比方说,当你写了 var a = 1 + 1; 这样一段代码,JavaScript引擎做的事情就是看懂(解析)你这段代码,并且将a的值变为2. 学过编译原理的人都知道,对于静态语言来说(如Java.C++.C),处理上述这些事情的叫编译器(Compiler),相应地对于JavaScript这样的动态语言则叫解释器(Interpreter)

编译原理学习导论

编译原理学习导论 大学课程为什么要开设编译原理呢?这门课程关注的是编译器方面的产生原理和技术问题,似乎和计算机的基础领域不沾边,但是编译原理却一直作为大学本科的必修课程,同一时候也成为了研究生入学考试的必考内容.编译原理及技术从本质上来讲就是一个算法问题而已,当然因为这个问题十分复杂,其解决算法也相对复杂.我们学的数据结构与算法分析也是讲算法的,只是讲的基础算法,换句话说讲的是算法导论,而编译原理这门课程讲的就是比較专注解决一种的算法了.在20世纪50年代,编译器的编写一直被觉得是十分困难的事情

[JavaScript] 初中级Javascript程序员必修学习目录

很多人总感觉javascript无法入门,笔者在这里写一下自己的学习过程,以及个人认 为的最佳看书过程,只要各位能按照本人所说步骤走下去,不用很长时间,坚持 个3个月,你的js层级会提高一个档次,无他,唯有努力与坚持,请看: 1. 从头到尾对一遍<<Javascript高级程序设计>>,不懂的地方可以暂时掠过,给自己对javascript有一个大体的印象 2. 认认真真的读完这本书:<<编写可维护的javascript>>,从编码规范,技巧,模式,等各个方面

《JavaScript权威指南》学习笔记之二十---XMLHttpRequest和AJAX解决方案

一.AJAX概述 AJAX是Asynchronous JavaScript and XML的缩写,中文译作异步JavaScript和XML.AJAX 不是新的编程语言,而是一种使用现有标准的新方法,在不重新加载页面的情况下,与服务器交换数据并更新部分网页的艺术.其核心是:客户端的Javascript能够与web服务器进行异步数据交换. 二.AJAX基础---XMLHttpRequest对象 所有现代浏览器(IE7+.Firefox.Chrome.Safari 以及 Opera)均内建 XMLHt

《Javascript权威指南》学习笔记之十六:BOM之源---BOM基本应用

BOM的基本应用包括:管理浏览器历史.解析地址和获取浏览器信息,本文将介绍这些应用. 一.浏览历史管理 1.history对象的方法和属性 History 对象包含用户(在浏览器窗口中)访问过的 URL,是 window 对象的一部分,可通过 window.history 属性对其进行访问.没有应用于 History 对象的公开标准,不过所有浏览器都支持该对象. length属性:返回浏览器历史列表中的URl数量.是"前进"和"后退"两个按钮之下包含的地址数的总和.