javascript学习记录-2-18

变量类型,函数类型(传参)

js的变量有按值和引用传递,而参数只能按值来传递;

function addTen(num){

num+=10;

return num;

}

var count =20;

var result=addTen(count);

console.log(count);  //结果为20,当作参数传入函数,在函数内执行+操作,但是不会影响外围的count的值;

console.log(result);  //结果为30,调用函数后函数抛出执行+10后的结果


function setName( obj){

obj.name="nihao" ;

var obj=new Object();

}

var person=new Object();

setName(person);

console.log(person.name);   //结果为nihao

引用类型的传递,


function setName( obj){

obj.name="nihao" ;

var obj=new Object();

obj.name="hello" ;

obj.age="22" ;

}

var person=new Object();

setName(person);

console.log(person.name);

console.log(person.age);

这个函数说明如果函数传参如果是按引用传递的话那么person的值便会更新为hello,这说明即使在函数内修改了参数的值,但是原始的引用仍然保持未变,在obj重写后,此obj便成了局部变量。


类型检测-执行环境及作用域

console.log(person instanceof Function);    //检测类型,instanceof 查询person是否是Function,返回的是布尔值,所有引用类型都是object

一般的话习惯用的是typeof

然后检测某个引用是否是数字类型的话可以用   isNaN


var color= "blue";

function changeColor(){

var anotherColor= "red";

function swapColor(){

var tempColor= anotherColor;

console.log("1:::::" +tempColor);   //tempColor:red

anotherColor=color;                 //color:blue

console.log("2:::::" +anotherColor);  //anotherColor:blue

color=tempColor;     //color=tempcolor=red

console.log("3:::::" +color); // color: red

console.log("4:::::" +tempColor); //tempColor:red

console.log("5:::::" +anotherColor);  //anotherColor:blue

}

swapColor();

}

changeColor();

凌乱~

注意:函数一般只能内向外访问,如果需要由外往内访问的话,需要内部抛出或延长作用域链


function builderUrl(){

var qs= "?debug=true";

with(location ){

var url= href+qs;

console.log(href);  //结果为当前url地址

console.log(qs);    //结果为当前url地址+qs的结果

console.log("111" +qs);    //结果qs的结果

console.log("111" +location.href);    //结果为当前url地址的结果

}

//with的作用是 ------当你有一个对象的多个属性或者方法需要操作时,就可以使用with,此处的with块相当于:-

/*

*/

return url;

}

console.log(builderUrl());

console.log(window .location.href); //结果为当前url地址

这里的with没怎么看懂,百度的结果是:文中有声明的时候自动调用,

----- with 语句可以用来引用某个特定的对象中已有的属性,但是不能用来给对象添加属性,要给对象添加属性,还要明确的引用该对象。

建议一般不要用with


function add( na1,na2 ){

sum =na1+ na2;

console.log(sum);

}

console.log(add(1 ,2));

由于add函数没有抛出sum所有外围的加法是没法从add函数传出的,只在函数内部执行

注意:此处的sum为全局变量

如果sum为局部变量的话那么即使在add中抛出sum在外围也是无法调用的。

var sum;

function add( na1,na2 ){

sum =na1+ na2;

console.log(sum);  //3

return sum;

}

console.log(add(1 ,2));//3

console.log(sum);  //3

外围声明全局后,也可以存储sum的值,所以最后输出的值为3.


var color= "blue";

function getColor(){

return color;

}

console.log(getColor()); //blue   ---标识符搜索


垃圾回收机制,只需要稍微了解下。


引用类型

对象定义的几种方法:

var  person=new Object();

person.name="111";

person.age=22;

var person={

name:"111",

age:22

}

var person={};

person.name="111";

person.age=22;


对象也可以用数值属性,但是数值属性会自动转化为字符串类型。


function displayInfo( args){

var output ="";

if( typeof args.name== "string"){

output+="Name:" +args.name+ "\n";

}

if( typeof args.age== "number"){

output+="Age:" +args.age+ "\n";

}

console.log(output);

}

displayInfo({

name :"jl",

age: 22

});

displayInfo({

name: "11",

age :11

});

//Name:jl

//Age:22

//Name:11

//Age:11

//相当于封装函数了吧?


Array类型

var color=new Array(3);

var name=new Array("hello");   //创建一个包含字符串hello的数组

检测数组除了之前的instanceof

外在es5后新增了Array.isArray()方法         //isArray支持ie9+


数组也提供了类似于栈的操作,

var a=new Array();

var b=a.push("red","blue");

//向后添加两个参数到a数组,b输出数组长度2,a输出["red","blue"]

var c = a.pop();

//输出的c为blue(取出了最后一个,且返回) ,a的值为["red"]

//栈方法的(栈数据结构)的访问规则是后进先出,而队列方法的数据结构访问规则是先进先出

时间: 2024-11-21 01:42:02

javascript学习记录-2-18的相关文章

JavaScript学习记录day2

JavaScript学习记录day2 学习 javascript JavaScript学习记录day2 1.1 数据类型 1.2 变量 1.1.1 Number 1.1.2 字符串 1.1.3 布尔值 1.1.4 比较运算符 1.1.5 null和undefined 1.1.6 数组 1. 数据类型和变量 1. 数据类型和变量 1.1 数据类型 1.1.1 Number JavaScript不区分整数和浮点数,统一用Number表示,以下都是合法的Number类型: 123; // 整数1230

JavaScript学习记录day1

JavaScript学习记录day1 学习 javascript JavaScript学习记录day1 1. 快速入门 2. 编程工具 3. 语法 4. 注释 5. 大小写 JavaScritps 是什么? JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能. 在Web世界里,只

javascript 学习记录

关于牛B的Jquery源头 (function(){ //这里省略jQuery所有实现 })(); 1:无论你怎么去定义你的函数 JS解释器都会把它翻译成一个 Function对象 2:那什么是Function? Function对象是javascript里面 固有对象,所有的函数实际上都是一个 Function对象 3: alert(typeof function(){});// "function" alert(typeof function(x,y){return x+y;});

JavaScript学习记录day5-函数的定义和调用

JavaScript学习记录day5-函数的定义和调用 [TOC] 1. 定义函数 在JavaScript中,定义函数的方式如下: function abs(x) { if (x >= 0) { return x; } else { return -x; } } 上述abs()函数的定义如下: function指出这是一个函数定义:abs是函数的名称:(x)括号内列出函数的参数,多个参数以,分隔:{ ... }之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句.请注意,函数体内部的语句在

JavaScript学习记录day7-高阶函数

JavaScript学习记录day7-高阶函数 [TOC] 1. 什么是高阶函数 高阶函数英文叫Higher-order function.那么什么是高阶函数? JavaScript的函数其实都指向某个变量.既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数. 一个最简单的高阶函数: function add(x, y, f) { return f(x) + f(y); } 当我们调用add(-5, 6, Math.abs)时,参数x,

JavaScript学习记录day9-标准对象

JavaScript学习记录day9-标准对象 [TOC] 在JavaScript的世界里,一切都是对象. 但是某些对象还是和其他对象不太一样.为了区分对象的类型,我们用typeof操作符获取对象的类型,它总是返回一个字符串: typeof 123; // 'number' typeof NaN; // 'number' typeof 'str'; // 'string' typeof true; // 'boolean' typeof undefined; // 'undefined' typ

诶西,JavaScript学习记录。。。。。。

由于大学课程缘故,老师巨爱叫人问问题,还记分呢,随便记录一下Js的学习情况,以后复习什么的也比较方便吧...... 开始咯,就按照C语言学习那样的方法来吧! ==================================割割割================================== 1.数据类型(这里只是大概提一下) 1 /* 2 我认为Js里没有明显的数据类型,仅有 字符串.数字.布尔.数组.对象.Null.Undefined 3 */ 4 5 var temp = 'leg

Javascript学习记录——原生JS实现旋转木马特效

昨天学习到了JS特效部分,然后老师讲了旋转木马特效的实现,如上图.不过只是讲了通过点击箭头实现图片的切换,对于点击图片本身以及二者联动却是没有讲解. 本着一颗追求完美的心,今天花费了一个中午终于将整个功能全部完善(死了太多脑细胞~~). 接下来直接进入主题哈~(主要讲解JS,所以对其中的HTML及CSS不做详细说明.) 首先是HTML代码 <!DOCTYPE html> <html> <head lang="en"> <meta charset

Javascript学习记录——一次小项目的总结

这几天都忙着上课还有准备项目,没有时间写博客,今天总是完成了项目的评比,有点失落,有点感悟. 背景:博主是传智博客的培训生,学完了html,css,以及js特效,班级共84人,项目分为8组,博主有幸担任第8组组长. 项目概况:每个组各自以一个网站为模板进行模仿,页面为非静态页面,时间为1周,包括上课时间.(博主用的原生js) 项目完成过程: 1.接到任务当天,博主便组织小组成员在晚自习时间进行一次简单的讨论,然后发布任务,每人选择两个自己中意的网站,并说明理由,第二天将要写的网站定下来. 2.次

OpenCV官方文档学习记录(18)

霍夫圆变换: 1 #include <opencv2\opencv.hpp> 2 #include <iostream> 3 #include <string> 4 #include <vector> 5 6 #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) 7 8 using namespac