উইন্ডো.লোকেশন = এবং উইন্ডো.লোকেশন.রেপ্লেস () এর মধ্যে পার্থক্য কী?


273

এই দুটি লাইনের মধ্যে পার্থক্য আছে কি?

var url = "http://www.google.com/";
window.location = url;
window.location.replace(url);

3
আমি এই এখানে ব্যাখ্যা করেছিলেন: stackoverflow.com/questions/846954/...
ম্যাথিয়াস Bynens

উত্তর:


408

window.location আপনার ইতিহাসে একটি আইটেম যুক্ত করে যাতে আপনি "পিছনে" ক্লিক করতে পারেন এবং বর্তমান পৃষ্ঠায় ফিরে যেতে পারেন।

window.location.replace বর্তমান ইতিহাসের আইটেমটি প্রতিস্থাপন করে যাতে আপনি এটিতে আর ফিরে যেতে পারবেন না।

দেখুন window.location:

assign(url): প্রদত্ত ইউআরএলে দস্তাবেজটি লোড করুন।

replace(url): প্রদত্ত ইউআরএলটির সাথে বর্তমান নথিটি প্রতিস্থাপন করুন। assign()পদ্ধতি থেকে পার্থক্য হ'ল replace()বর্তমান পৃষ্ঠাটি ব্যবহার করার পরে সেশন ইতিহাসে সংরক্ষণ করা হবে না, যার অর্থ ব্যবহারকারী এতে নেভিগেট করতে ব্যাক বোতামটি ব্যবহার করতে সক্ষম হবে না।

ওহ এবং সাধারণভাবে বলতে:

window.location.href = url;

পক্ষপাতী:

window.location = url;

52
কেন window.location.hrefপক্ষপাতী হবে window.location?
ম্যাথিয়াস বাইনেন্স

13
এখানে আলোচনা: stackoverflow.com/questions/2383401/...
goodeye

1
প্রশ্ন - আমি যদি window.location.replace(URL)ইউআরএল বর্তমানের ঠিক একইরকম ব্যবহার করি তবে আমি কি তা পুনরায় রিফ্রেশ / পুনরায় লোড করার আশা করতে পারি বা এতে কিছুই করার বিকল্প নেই?
user9645

11

TLDR;

ব্যবহার location.hrefবা আরও ভাল ব্যবহার window.location.href;

তবে আপনি এটি পড়লে আপনি অনস্বীকার্য প্রমাণ পাবেন gain

সত্য এটি ব্যবহার করার জন্য ঠিক আছে তবে প্রশ্নযুক্ত কেন এমন কাজ করবেন। আপনার উঁচু রাস্তাটি নিয়ে যাওয়া উচিত এবং এটি সম্ভবত এটি করা উচিত।

location = "#/mypath/otherside"
var sections = location.split('/')

এই কোডটি সঠিকভাবে সিনট্যাক্স-ভিত্তিক, যুক্তি অনুসারে সঠিক, টাইপ-ওয়াইস আপনি কি এটির সাথে একমাত্র ভুল জানেন?

এটি locationপরিবর্তে আছেlocation.href

এই সম্পর্কে কি

var mystring = location = "#/some/spa/route"

এর মান কী mystring? কেউ কি কিছু পরীক্ষা না করে সত্যিই জানে? এখানে ঠিক কী ঘটবে তা কেউ জানে না। হেল আমি এগুলি লিখেছি এবং এটি কী করে তা আমি জানি না। locationএকটি অবজেক্ট তবে আমি একটি স্ট্রিং বরাদ্দ করছি এটি স্ট্রিংটি পাস করবে বা লোকেশন অবজেক্টটি পাস করবে। আসুন বলুন কীভাবে এটি প্রয়োগ করা উচিত তার কিছু উত্তর রয়েছে। আপনি কি গ্যারান্টি দিতে পারবেন যে সমস্ত ব্রাউজার একই কাজ করবে?

এটি আমি খুব অনুমান করতে পারি যে সমস্ত ব্রাউজার একই হ্যান্ডেল করবে।

var mystring = location.href = "#/some/spa/route"

আপনি যদি এটিকে টাইপস্ক্রিপ্টে রাখেন তবে কি এটি ভেঙে যাবে কারণ টাইপ সংকলক বলবে এটি একটি বস্তু বলে মনে হয়?

এই কথোপকথনটি কেবলমাত্র locationবস্তুর চেয়ে অনেক গভীর । আপনি কোন ধরণের প্রোগ্রামার হতে চান সে সম্পর্কে এই রূপান্তরটি কী?

আপনি যদি এই শর্ট-কাটটি গ্রহণ করেন, তবে হ্যাঁ, আজ এটি ঠিক আছে, আপনি আগামীকাল ঠিকঠাক হতে পারেন, জাহান্নাম এটি চিরকাল ঠিক আছে, তবে আপনি স্যার এখন একজন খারাপ প্রোগ্রামার। এটি আপনার পক্ষে ঠিক হবে না এবং এটি আপনাকে ব্যর্থ করবে।

আরও বস্তু থাকবে। নতুন সিনট্যাক্স থাকবে।

আপনি এমন একজন গিটরকে সংজ্ঞায়িত করতে পারেন যা কেবল একটি স্ট্রিং নেয় তবে একটি জিনিস দেয় এবং সবচেয়ে খারাপ দিকটি আপনি মনে করেন আপনি কিছু সঠিক করছেন বলে আপনি মনে করতে পারেন আপনি এই চতুর পদ্ধতির জন্য উজ্জ্বল কারণ এখানকার লোকেরা আপনাকে লজ্জাজনকভাবে পথভ্রষ্ট করেছে।

var Person.name = {first:"John":last:"Doe"}
console.log(Person.name) // "John Doe"

গেটার্স এবং সেটটারদের সাথে এই কোডটি আসলে কাজ করবে, তবে এটি সম্পন্ন করার কারণে এটি 'WISE' এর অর্থ এটি নয়।

প্রোগ্রামিং করা বেশিরভাগ লোকেরা প্রোগ্রাম পছন্দ করেন এবং ভাল হতে পছন্দ করেন। গত কয়েক বছর ধরে আমি বেশ ভাল পেয়েছি এবং অনেক কিছু শিখেছি। আমি এখন জানি সবচেয়ে গুরুত্বপূর্ণ বিষয়টি বিশেষত আপনি যখন গ্রন্থাগারগুলি লেখেন তা হ'ল ধারাবাহিকতা এবং অনুমানযোগ্যতা।

ধারাবাহিকভাবে করতে পারেন এমন কাজগুলি করুন।

+"2"<- এই ডান এখানে একটি সংখ্যার স্ট্রিং পার্স। আপনি এটি ব্যবহার করা উচিত? বা আপনার ব্যবহার করা উচিত parseInt("2")?

কি var num =+"2"?

আপনি যা শিখেছেন তা থেকে, স্ট্যাকওভারফ্লোয়ের মন থেকে আমি খুব বেশি আশা করি না।

আপনি যদি এই 2 টি শব্দটি ধারাবাহিক এবং অনুমানযোগ্য অনুসরণ করতে শুরু করেন। আপনি স্ট্যাকওভারফ্লোতে এক টন প্রশ্নের সঠিক উত্তর জানবেন।

এটি আপনাকে কীভাবে বন্ধ করে দেয় তা আমাকে দেখাতে দাও। সাধারণত ;আমি লিখি জাভাস্ক্রিপ্টের প্রতিটি লাইনে রাখি । আমি জানি এটি আরও প্রকাশিত। আমি জানি এটি আরও পরিষ্কার। আমি আমার নিয়ম অনুসরণ করেছি। একদিন সিদ্ধান্ত নিলাম না। কেন? কারণ এত লোক আমাকে বলছে যে এটির আর দরকার নেই এবং জাভাস্ক্রিপ্ট এগুলি না করেই করতে পারে। সুতরাং আমি কি এই সিদ্ধান্ত নিয়েছে। এখন আমি প্রোগ্রামার হিসাবে আমার নিজের সম্পর্কে নিশ্চিত হয়ে উঠছি (যেমন আপনার কোনও ভাষা আয়ত্ত করার ফলটি উপভোগ করা উচিত) আমি খুব সাধারণ কিছু লিখেছিলাম এবং আমি এটি পরীক্ষা করে দেখিনি। আমি একটি কমা মুছে ফেলেছিলাম এবং আমি মনে করি না যে একটি কমা মুছে ফেলার মতো সাধারণ জিনিসটির জন্য আমার পুনরায় পরীক্ষা করা দরকার।

আমি এস 6 এবং বাবেলে এর অনুরূপ কিছু লিখেছি

var a = "hello world"
(async function(){
  //do work
})()

এই কোডটি ব্যর্থ হয়েছে এবং চিরকালের জন্য বের করে। কোন কারণে এটি যা দেখেছিল তা ছিল

var a = "hello world"(async function(){})()

সোর্স কোডের গভীরে লুকানো এটি আমাকে বলছিল "হ্যালো ওয়ার্ল্ড" কোনও ফাংশন নয়।

আরও মজাদার নোড ট্রান্সপ্লেরড কোডের উত্স মানচিত্রগুলি দেখায় না।

এত বোকা সময় নষ্ট। আমি ES6 কীভাবে উজ্জ্বল তা সম্পর্কে কাউকে উপস্থাপন করছিলাম এবং তারপরে আমাকে ডিবাগিং শুরু করতে হয়েছিল এবং মাথাব্যথা মুক্ত এবং ES6 কতটা উন্নত তা প্রদর্শন করতে হয়েছিল। এটা বিশ্বাসযোগ্য নয়।

আমি আশা করি এটি আপনার প্রশ্নের উত্তর দিয়েছে। এটি একটি পুরাতন প্রশ্ন এটি ভবিষ্যতের প্রজন্মের জন্য, যারা এখনও শিখছে তাদের পক্ষে এটি আরও বেশি।

প্রশ্ন যখন লোকেরা বলেন যে এটি কোনওভাবেই কাজ করে না। সম্ভাবনা আরও বুদ্ধিমান আরও অভিজ্ঞ ব্যক্তি আপনাকে অন্য জ্ঞানী বলবে।

কেউ যদি অবস্থানের বিষয়টিকে ওভাররাইট করে। তারা পুরানো ব্রাউজারগুলির জন্য একটি শিহরণ করবে। এটি এমন একটি নতুন বৈশিষ্ট্য পাবে যা শিম করার দরকার এবং আপনার 3 বছরের পুরানো কোডটি ব্যর্থ হবে।

আমার শেষ নোটটি চিন্তা করা।

পরিষ্কার, পরিষ্কার উদ্দেশ্যমূলক কোড লেখা আপনার কোডের জন্য এমন কিছু করে যা সঠিক বা ভুল দিয়ে উত্তর দেওয়া যায় না। এটি যা করে তা হ'ল এটি আপনার কোডকে একটি সক্ষম করে তোলে।

কোডগুলির মধ্যে বাধা পাওয়ার আশঙ্কায় আপনি আরও জিনিস প্লাগইন, গ্রন্থাগারগুলি ব্যবহার করতে পারেন।

রেকর্ড এর জন্য. ব্যবহার

window.location.href


24
দীর্ঘ তথ্যমূলক উত্তর, উত্সাহিত্বে যুক্তিযুক্ত। কিন্তু window.location.hrefওভার ব্যবহারের পক্ষে যুক্তি দেওয়ার সময় window.location, আপনি ভুলে গিয়েছিলেন যে প্রশ্নটি আসলে এইগুলির মধ্যে পার্থক্য window.location.replace()
চেয়েছিল

10
যে কোনও সময় আমি টিএলডিআর দেখি আমি একটি সংক্ষিপ্ত উত্তর আশা করি, 5x দীর্ঘ নয় one
user9645

3
TLDR; use location.href or better use window.location.href; টিএলডিআর হ'ল এই লাইন। বাকিটি "উত্তর" answer
ইলিসিয়ামপ্লেইন

আমি মনে করি না আপনি অস্বাভাবিক ব্যবহারের ক্ষেত্রে প্রবর্তন করে বৈধ পয়েন্টটি করেছেন। অর্থাত mystring = location.href = "#/some/spa/route"। এছাড়াও, অনেক ভাষা কোনও উপায়ে (অন্তর্নিহিত) প্রকারের কাস্টের অনুমতি দেয়। দিনের শেষে, জাভাস্ক্রিপ্ট একটি গতিশীল টাইপযুক্ত ভাষা, এটির উপর ধরণের ধারণাগুলি রাখুন এবং বলুন যে এটি ভাল নয় তাতে কোনও লাভ নেই।
আপেল আপেল

1
কেউ যদি অবস্থানের বিষয়টিকে ওভাররাইট করে । ভাল, ঠিক কী বলার মতো যদি কেউ ওভাররাইট consoleবা ছায়া window- এখন আপনার একটি বড় সমস্যা রয়েছে।
আপেল আপেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.