From 12e44a2fcbe4d5c3ddc880c6686b25120b861ff1 Mon Sep 17 00:00:00 2001 From: YOGINIMAHIMA1 Date: Thu, 27 Jun 2024 23:48:17 +0530 Subject: [PATCH] modified --- .vscode/launch.json | 15 +++ DOM/dynamicelementcreate.html | 14 +++ DOM/dynamicelementcreate.js | 26 +++++ DOM/eventlistener.html | 3 + DOM/eventlistener.js | 30 +++++- Generatorfunction/Readme.md | 1 + Generatorfunction/index.js | 19 ++++ IIFE/index.js | 110 ++++++++++++++++++++ Promisification/index.html | 14 +++ Promisification/index.js | 17 ++++ Promisification/text.js | 1 + array/index.js | 57 +++++++++++ bluetoothusingJavascript/index.js | 0 closure/index.html | 13 +++ closure/index.js | 53 ++++++++++ compositioninJS/Readme.md | 1 + compositioninJS/index.js | 63 ++++++++++++ currying/index.js | 82 +++++++++++++++ function/index.js | 47 +++++++++ index.js | 46 --------- index4.html | 0 index4.js | 160 +++++++++++++++++++++++++++++- localstorage/index.html | 13 +++ localstorage/index.js | 18 ++++ ndex.html | 0 promises/promise.html | 12 +++ promises/promise.js | 26 +++++ type conversion2.JPG | Bin 0 -> 75804 bytes 28 files changed, 792 insertions(+), 49 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 DOM/dynamicelementcreate.html create mode 100644 DOM/dynamicelementcreate.js create mode 100644 Generatorfunction/Readme.md create mode 100644 Generatorfunction/index.js create mode 100644 IIFE/index.js create mode 100644 Promisification/index.html create mode 100644 Promisification/index.js create mode 100644 Promisification/text.js create mode 100644 array/index.js create mode 100644 bluetoothusingJavascript/index.js create mode 100644 closure/index.html create mode 100644 closure/index.js create mode 100644 compositioninJS/Readme.md create mode 100644 compositioninJS/index.js create mode 100644 currying/index.js create mode 100644 function/index.js create mode 100644 index4.html create mode 100644 localstorage/index.html create mode 100644 localstorage/index.js create mode 100644 ndex.html create mode 100644 promises/promise.html create mode 100644 promises/promise.js create mode 100644 type conversion2.JPG diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..2ba986f --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "chrome", + "request": "launch", + "name": "Launch Chrome against localhost", + "url": "http://localhost:8080", + "webRoot": "${workspaceFolder}" + } + ] +} \ No newline at end of file diff --git a/DOM/dynamicelementcreate.html b/DOM/dynamicelementcreate.html new file mode 100644 index 0000000..eca0e22 --- /dev/null +++ b/DOM/dynamicelementcreate.html @@ -0,0 +1,14 @@ + + + + + + dyamicelementcreateusingdom + + + + + + + + \ No newline at end of file diff --git a/DOM/dynamicelementcreate.js b/DOM/dynamicelementcreate.js new file mode 100644 index 0000000..731a68b --- /dev/null +++ b/DOM/dynamicelementcreate.js @@ -0,0 +1,26 @@ +const btn= document.querySelector('#btn') +btn.addEventListener('click',()=> +{ + const head1= document.createElement('h1') + head1.setAttribute('id','heading') + head1.innerHTML='this is heading' + document.body.appendChild(head1) + +}) + btn1.addEventListener('click',()=> +{ + const ul= document.createElement('ul') + const li=document.createElement('li') + ul.setAttribute('id','unordered') + ul.appendChild(li) + li.innerText='added unordered list' + document.body.appendChild(ul) +}) +let count=1 +btn2.addEventListener('click',()=> +{ + const li= document.createElement('li') + li.innerText=count; + document.body.appendChild(li) + count=count+2; +}) \ No newline at end of file diff --git a/DOM/eventlistener.html b/DOM/eventlistener.html index 2e6e2e0..4c16dab 100644 --- a/DOM/eventlistener.html +++ b/DOM/eventlistener.html @@ -6,9 +6,12 @@ event listner +

hi,i belong to coding community

+ + \ No newline at end of file diff --git a/DOM/eventlistener.js b/DOM/eventlistener.js index 397f19b..55bfe9e 100644 --- a/DOM/eventlistener.js +++ b/DOM/eventlistener.js @@ -6,4 +6,32 @@ function clickMe() } const btn= document.getElementById('btn') -btn.onclick=()=>document.write('clicked') \ No newline at end of file +btn.onclick=()=>document.write('clicked') + +const btn1=document.getElementById('btn1') +btn1.addEventListener('click',()=> +{ + document.write('clickedbutton') +}) + +//red.addEventListener('click',()=> +//{ + const redcolor= document.getElementById('redcolor') + //redcolor.style.color='red' + // redcolor.style.backgroundColor='yellow' + red.addEventListener('click',()=>{ + if(redcolor.style.color==='red'){redcolor.style.color='blue' + } + else{ + redcolor.style.color='red' + } +}) + + + +//}) +const body= document.querySelector('body') +body.addEventListener('click',()=> +{ + body.remove(); +}) \ No newline at end of file diff --git a/Generatorfunction/Readme.md b/Generatorfunction/Readme.md new file mode 100644 index 0000000..2074da5 --- /dev/null +++ b/Generatorfunction/Readme.md @@ -0,0 +1 @@ +# Iterator Pattern Genearator Function #YIELD Keyword \ No newline at end of file diff --git a/Generatorfunction/index.js b/Generatorfunction/index.js new file mode 100644 index 0000000..9de7452 --- /dev/null +++ b/Generatorfunction/index.js @@ -0,0 +1,19 @@ +//Built-in iterator +for(const val of [1,2,3,4,5]){ + console.log(val) +} +//YIELD +function *create(){ + console.log('how') + yield 'many'; + console.log('coding') + yield 'community'; +} + const cr=create() + /*console.log(cr.next().value) + console.log(cr.next().value)*/ + + for(let val of cr){ + console.log(val) + } + \ No newline at end of file diff --git a/IIFE/index.js b/IIFE/index.js new file mode 100644 index 0000000..8cb0d24 --- /dev/null +++ b/IIFE/index.js @@ -0,0 +1,110 @@ +(function add(a,b){console.log(a+b)})(2,3); + +(function print(){console.log("hello")})(); + +(()=>console.log('hii'))(); + +const divide =((a,b)=> a/b)(4,2); +console.log(divide); + + +const value=(()=>100)(); +console.log(value) + +// Regular Function +function add(a,b){ + console.log(a+b) +} +add(2,3) + + +// Arrow function +const a=()=>{ + console.log(26) +} + +// Regular IIFE +(function something(){ + console.log('something but nothing') +})(); + +//Anonymous IIFE +(function Do(){ + console.log('Arrow IIFE') +})(); + +//arrow IIFE +(arrow=()=>{ + console.log('Arrow IIFE') +})(); + +let age=25; +arrow=(()=>{ + age=27; + console.log(age+1); +})(); + + +const val= ((a,b)=> a-b)(9,9); +console.log(val) +/* +const multiply =((a,b)=>{return a*b}) +(3,2); +console.log(multiply); +*/ +//atm +/* +const atm= function(startBal){ + let bal= startBal; + function withdraw(amt){ + if(amt>bal){ + throw err; + } + else{ + bal-=amt; + return bal; + } + } + + return {withdraw}; + +}; +const mahima= atm(2000) +console.log(mahima.withdraw(200)) +*/ + + +const x='xyz'; +const hi=()=>"hii"; + (()=>{ + const x='lol'; + const hi=()=>"hello"; + console.log(x); + console.log(hi()); +})(); + + +// Private variable and methods from closure +const increment=(()=>{ + let counter=0 + console.log(counter) + const credits=(num)=>console.log(`I have ${num} credits `) + return ()=> {++counter; credits(counter);} +})(); +increment() + +// Module Pattern +const Score =(()=>{ + let count=0 + return { + current:()=>{return count}, + increment:()=>{count ++}, + reset:()=>{count=0} + } +})(); +Score.increment() +console.log(Score.current()) +Score.increment() +console.log(Score.current()) +Score.reset() +console.log(Score.current()) \ No newline at end of file diff --git a/Promisification/index.html b/Promisification/index.html new file mode 100644 index 0000000..d9ec4c7 --- /dev/null +++ b/Promisification/index.html @@ -0,0 +1,14 @@ + + + + + + + Promisifiication + + +

Promisification

+ + + + \ No newline at end of file diff --git a/Promisification/index.js b/Promisification/index.js new file mode 100644 index 0000000..6e545cb --- /dev/null +++ b/Promisification/index.js @@ -0,0 +1,17 @@ +function loadScript(src,callback){// src--it will give script urland callback will give callback function + const script= document.createElement('script') + script.src=src; + script.onload=()=>callback(null,script) + script.onerror=(err)=>callback(err) + document.head.appendChild(script) + + +} +loadScript('test.js',(err,script)=>{ + if(err){ + console.log(err) + } + else{ + console.log('script loaded') + } +}) \ No newline at end of file diff --git a/Promisification/text.js b/Promisification/text.js new file mode 100644 index 0000000..b2518e8 --- /dev/null +++ b/Promisification/text.js @@ -0,0 +1 @@ +console.log('hello lolo') \ No newline at end of file diff --git a/array/index.js b/array/index.js new file mode 100644 index 0000000..5d13677 --- /dev/null +++ b/array/index.js @@ -0,0 +1,57 @@ +const arr=[2,4,6,8,133] +const res = arr.forEach((item) => { + return item * item; + }); + +// it will return new array after performing operation + const ret= arr.map((val)=>{ + return val *val + }) +console.log(ret) + //console.log(typeof ret) + + // array of object + const arrObj=[ + { + name:'Raj', + age:22, + profession:'Mern Stack' + }, + { + name:'kiara', + age:28, + profession:' Software Engineer' + }, + { + name:'sheena', + age:30, + profession:'Frontend developer' + }, + { + name:'Preeti', + age:30, + profession:'Frontend developer' + }, + { + name:'Mayank', + age:37, + profession:'Frontend developer' + }, + { + name:'ram', + age:70, + profession:'software developer' + }, +] + + const newArr= arrObj.filter((val)=>{ + return val.profession=='Frontend developer'; + }) + console.log(newArr) + + + const red= arr.reduce((curr,total,index,array)=>{ + + return curr + }) + console.log(red) \ No newline at end of file diff --git a/bluetoothusingJavascript/index.js b/bluetoothusingJavascript/index.js new file mode 100644 index 0000000..e69de29 diff --git a/closure/index.html b/closure/index.html new file mode 100644 index 0000000..bcb7aeb --- /dev/null +++ b/closure/index.html @@ -0,0 +1,13 @@ + + + + + + closure + + +

closure

+ + + + \ No newline at end of file diff --git a/closure/index.js b/closure/index.js new file mode 100644 index 0000000..f3324ec --- /dev/null +++ b/closure/index.js @@ -0,0 +1,53 @@ +/*function outerFun(num){ + function innerFun(num1){ + return num+num1 + } + return innerFun +} +const res= outerFun(11) +console.log(res(2)) +*/ + + +// HOF------- high order function +function square(a){ + return a*a; +} +function calcSquare(square,value){ + return square(value) +} +const num= calcSquare(square,20) +console.log(num) + +const btn= document.getElementById('btn') +const closure=document.getElementById('closure') +function outerFun(size){ + function innerFun(){ + // closure.style.color='blue' + closure.style.fontSize= `${size}px` + +} +return innerFun; +} + const size15=outerFun(15) + const size30=outerFun(30) + const size40=outerFun(40) + const size60= outerFun(60) + + btn.addEventListener('click',size40) + + +function firstfunc(count){ + function secondfunc(){ + + return count++ + } + return secondfunc +} +var data= firstfunc(1) +data() + + + + + \ No newline at end of file diff --git a/compositioninJS/Readme.md b/compositioninJS/Readme.md new file mode 100644 index 0000000..07eae53 --- /dev/null +++ b/compositioninJS/Readme.md @@ -0,0 +1 @@ + # jab no of functions ko sequence me call krna hai tab composition of function use krenge \ No newline at end of file diff --git a/compositioninJS/index.js b/compositioninJS/index.js new file mode 100644 index 0000000..74d6d49 --- /dev/null +++ b/compositioninJS/index.js @@ -0,0 +1,63 @@ +const add=(a,b)=>a+b; +const square=(num)=> num*num; +console.log(square(add(2,3))) + + + +/*const square1=(val)=>val*val +function composeTwoFunction(fn1,fn2){ + return function(a,b){ + return fn2(fn1(a,b)) + } +} +*/ +/* +const task= composeTwoFunction(add,square) +console.log( task(2,5)) +*/ + + + +const multiply1 = (a, b) => a * b; +const add1 = (a, b) => a + b; + +const c2f = (fn1, f2) => (a, b) => f2(a, fn1(a, b)); + +const task = c2f(multiply1, add1); +console.log(task(2, 7)); // Output: 16 + + + +function sum(a,b){ + return a+b +} +function sq(val){ + return val*val +} + +function sumandSquare(a,b) +{ + return sq(sum(a,b)) +} + +console.log(sumandSquare(4,6)) + + + +const divide=(a,b)=> a/b ; +const multiplyy=(a,b)=>a*b + + +const divAndmultiply=(a,b)=> multiplyy(divide(a,b),3) +console.log(divAndmultiply(4,2)) + + + +function composeTwoFunction(fn1, fn2){ + return function (a,b){ + return fn2(fn1(a,b)) + } +} + const cTwof=(fn1,fn2)=>(a,b)=>fn2(fn1(a,b)) + + const tsk= cTwof(multiplyy,divide) \ No newline at end of file diff --git a/currying/index.js b/currying/index.js new file mode 100644 index 0000000..0993158 --- /dev/null +++ b/currying/index.js @@ -0,0 +1,82 @@ +// basic currying +const add=(a)=>{ + return (b)=>{ + return (c)=>{ + return a+b+c + } + } +} +const res= add(2)(3)(5) +console.log(res) + + +const subtract=(a)=>{ + return(b)=>{ + return(c)=>{ + return a-b-c + } + } +} +const sub= subtract(10)(8)(4) +console.log(sub) + + +/*function SendEmail(to){ + return function (subject){ + return function (body) { + console.log(`Sending Email to ${to} with subject ${subject}: ${body}`) + } + } +} +let step1= SendEmail("xyz@gmail.com") +let step2= step1("new order confirmation") +step3= step2('hey xyz there is something for you') +*/ + +/* +function Email(to){ + return function (subject){ + return function (body){ + console.log(` Sending email to ${to} with subject ${subject}:${body}`) + } + } +} + + +const step1= SendEmail +*/ + + + + + + +function Sandwich(bread){ + return function(tomato){ + return function(onion){ + console.log(`It is made up of ${bread} and ${tomato} and ${onion}`) + + } + } +} + +const SandwichPart1= Sandwich('bread')('tomato')('onion') +console.log(SandwichPart1) + + +function Poha(poha){ + return function Tomato(tomato){ + return function Onion(onion) + { + console.log(`clean ${poha} in water then boil it and add ${tomato} and add ${onion}`) + } +} +} + +const MakingPoha= Poha('poha')('tomato')('onion') +console.log(MakingPoha) + + + + + diff --git a/function/index.js b/function/index.js new file mode 100644 index 0000000..9bc5662 --- /dev/null +++ b/function/index.js @@ -0,0 +1,47 @@ +// Online Javascript Editor for free +// Write, Edit and Run your Javascript code using JS Online Compiler + + + +function sum(a,b) +{ + return a+b +} + var add=sum(2,5) + console.log (add) + + + const multiply=(a,b)=> a*b; + console.log(multiply(2,5)) + + + + const divide=(a,b)=>a/b + console.log(divide(10,5)) + + function sum(a,b){ + return a+b + } + + const addno= sum(2,5) + console.log(addno) + + + //arrow function + + const subtract=(a,b)=>{ + return a-b + } + const sub= subtract(3,2) + console.log(sub) + + function square(a) { + return a * a; +} + +function doCalc(square, value) { + return square(value); +} + +const sq = doCalc(square, 50); // Call do function with square function and value 50 +console.log(sq); // Output the result of calling square with 50, which is 2500 diff --git a/index.js b/index.js index 2183bd8..e69de29 100644 --- a/index.js +++ b/index.js @@ -1,46 +0,0 @@ -var h2= document.createElement('h2'); -//undefined -h2.innerText='heading 2'; -//'heading 2' -console.log(h2); -//VM245:1

​heading 2​

​ -//undefined -h2.setAttribute('id','heading-2'); -//undefined -h2.setAttribute('class','heading3'); -//undefined -console.log(h3); -//VM590:1 Uncaught ReferenceError: h3 is not defined - // at :1:13 -//(anonymous) @ VM590:1 -h2.setAttribute('class','heading-3'); -//undefined -console.log(h2); -//VM871:1

​heading 2​

​ -var h2= document.createElement('h2'); -//undefined -h2.innerText='heading 2'; -//'heading 2' -console.log(h2); -//VM245:1

​heading 2​

​ -//undefined -h2.setAttribute('id','heading-2'); -//undefined -h2.setAttribute('class','heading3'); -//undefined -console.log(h3); -//VM590:1 Uncaught ReferenceError: h3 is not defined -// at :1:13 -//(anonymous) @ VM590:1 -h2.setAttribute('class','heading-3'); -//undefined -console.log(h2); -//VM871:1

​heading 2​

​ -//undefined -document.body.appendChild(h2); - -// string all properties -var name1= "NetworkChunk" -console.log(name1.charAt(6)); -console.log(name1.indexOf('ork')); -console.log(lastIndexOf('hun')); \ No newline at end of file diff --git a/index4.html b/index4.html new file mode 100644 index 0000000..e69de29 diff --git a/index4.js b/index4.js index 56d78c1..26e44db 100644 --- a/index4.js +++ b/index4.js @@ -7,5 +7,161 @@ const person= name:'Jonathan', age:31 } -const newName=name; -console.log(name,newName); \ No newline at end of file +let newName=name; +console.log(name,newName);//John John +newName='Johnsonny' +console.log(name, newName);// John Johnsonny + + + +//TYPE CONVERSION +let number= '100' +let convStore= parseInt(number) +console.log(convStore, typeof convStore);//100 number + +// convert string to float +let amount='99.5' +amount=parseFloat(amount); +console.log(amount, typeof amount)// 99.5 + +//convert float to int +amount= parseInt(amount); +console.log( amount ,typeof amount);// 99 number + +amount= Boolean(amount) +console.log(amount, typeof amount)// true boolean + + +amount='hello' +console.log(parseInt(amount));//NaN +typeof amount// 'number' + + +Math.sqrt(-11)//NaN +typeof Math.sqrt(-11)//'number' + +console.log(1+NaN);//NaN +console.log(undefined + undefined);//NaN + +let num12= 'foo' *3// NaN +typeof num12// 'number' + +num12= 'lolo' +22// lolo22 +typeof num12// 'string' + +// operators +//arthemtic operators-- +,-,/,*,% +//concatenation +let x= 'Mahima'+ ' ' + 'Bhardwaj'; +console.log(x);// Mahima Bhardwaj +// exponent +let power= 2 ** 4 +console.log(power); +//increment +let x1 =2 +x1++;//2 +console.log(x);//3 +++x1//4 +//decrement +x1--// 4 +console.log(x1);//3 +--x1;// 2 +console.log(--x1+x1++);//2 +// assigment +let x22=4 +x22**=2;//16// power operator +//Type coehersion- javascript internall changes the type +var num=12+'11'; +console.log(num,typeof num);// 1211, string +//type conversion +let num2= 22 +console.log(string(num2));//22 +typeof num2// string +// CONVERT string into number +let x12=5 +'5' +x12= 5 + number('5') +console.log(x12);//10 +typeof x12/// number +// strings +let y; +let name='Kiara' +let age= 21 +y='Hello , my name is' + name + 'and I am' + age + 'years old'; +console.log(y);//Hello , my name is John and I am 21 years old +let y1= `Hello , my name is ${name} and I am ${age} years old` +console.log(y1); +let s11='hello world' +// to create string into string object + let x= new String('hello world')// string object + typeof x//object + // access value by key + x= s11[1];//e + x=s11.__proto__; // it will show all properties of string + // properties and methods of string + s11.toLowerCase();// hello world + s11.toUpperCase();// HELLO WORLD + s11.charAt(3);// l + s11.indexOf('l');// 2 + s11.lastIndexOf('l')//9 + s11.substring(0,4);// hell + s11.substring(4);//o world + + +// if statement +let soup="chicken noodle soup" +let reply; +if(soup) +{ + reply=`Here your order of ${soup}`;// +} +else +{ + console.log('no soup'); +} +console.log(reply);//Here your order of chicken noodle soup +//if else statement +let name1='John Hammond' +if(name1 ==='Raj Saxena') +{ + console.log(`My name is ${name1}`); +} +else +{ + console.log('this is not my name' );// this is not my name +} +let str= 'hello world' +str.slice(-10,-1) + +str.substring(2,4)//ll +str.replace('w','H')// 'hello Horld' + +//Create a var + +let sum, difference, product, quotient, remainder; +let x= Math.floor(Math.random()*20+1) +let y= Math.floor(Math.random()*20+1) +sum= x+y +difference=x-y +product= x*y +quotient=x/y +remainder= x%y +console.log(sum) +console.log(difference) +console.log(product) +console.log(quotient) +console.log(remainder) + + +str.includes('ello')//true +str.valueOf()//'hello Horld +str.replace('h', 'H')// Hello Horld +// caplitalize a single character in string +let str11= 'hello world' +// sol1 +let y12= str11.charAt(0).toUpperCase()+ str11.substring(1)// Hello world +//sol2 +let z1= str11[0].toUpperCase()+ str11.substring(1);// Hello world +// sol 3 +let p= `${str11[0].toUpperCase()}${str11.substring(1)}`// Hello world +// sol 4 +let k= str11.replace('h','H') diff --git a/localstorage/index.html b/localstorage/index.html new file mode 100644 index 0000000..3b421f1 --- /dev/null +++ b/localstorage/index.html @@ -0,0 +1,13 @@ + + + + + + local storage + + + + + + + \ No newline at end of file diff --git a/localstorage/index.js b/localstorage/index.js new file mode 100644 index 0000000..7c3864f --- /dev/null +++ b/localstorage/index.js @@ -0,0 +1,18 @@ +const input= document.getElementById('input') +const search= document.getElementById('search') +search.addEventListener('click',()=> +{ + const value= input.value + localStorage.setItem('name',value) + const h3= document.createElement('h3') + h3.innerText= localStorage.getItem('name',value) + document.body.appendChild(h3) +}) + + +window.addEventListener('load',()=>{ + const p= document.createElement('p') + localStorage.setItem('id',2) + p.innerText=localStorage.getItem('id',2) + document.body.appendChild(p) +}) \ No newline at end of file diff --git a/ndex.html b/ndex.html new file mode 100644 index 0000000..e69de29 diff --git a/promises/promise.html b/promises/promise.html new file mode 100644 index 0000000..807e482 --- /dev/null +++ b/promises/promise.html @@ -0,0 +1,12 @@ + + + + + + Document + + +

promise

+ + + \ No newline at end of file diff --git a/promises/promise.js b/promises/promise.js new file mode 100644 index 0000000..061f4a0 --- /dev/null +++ b/promises/promise.js @@ -0,0 +1,26 @@ +document.title='promises' +//const fetchData= fetch('https://jsonplaceholder.typicode.com/posts/') +//console.log(fetchData) +let a=10; +let b=20; +let res=a+b ; +/* +async function fetchData() +{ + let resultfromServer=await fetch('https://jsonplaceholder.typicode.com/posts/') + console.log(await resultfromServer.json()) +} +*/ +fetch('https://jsonplaceholder.typicode.com/posts/').then((data)=> +{ + console.log(data) +}).catch((err)=> + { + console.log(err) + }).finally(()=> +{ + console.log('no error') +}) +console.log(res) + +//fetch() \ No newline at end of file diff --git a/type conversion2.JPG b/type conversion2.JPG new file mode 100644 index 0000000000000000000000000000000000000000..507abe26b509325ddd40d2b8faa46bd56a073289 GIT binary patch literal 75804 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